我真正想要的是,我怎么知道C ++初始化的每个阶段何时真正完成?
有静态初始化,其中分配了简单的内容。然后是动态静态初始化,在该动态静态初始化中分配了更复杂的静态信息,而这些静态信息并未在“翻译单元”中定义。这有点可怕,并且没有很多简单的方法可以应对。我在某些地方使用名称空间进行加载头文件时的立即分配,但是这里的缺点是可以在初始化阶段之一中将其覆盖。
我可以将初始化设置为执行“正确的事情”的函数,但是如果我知道以某种方式知道自己处于什么“阶段”,它将容易得多。据我所知,这是根本不可能的,但是我希望外面有人能够得到一些好消息。
我已经解决了导致此问题的问题,因为未使用代码是因为它在项目中,所以没有被意外链接。知道答案仍然会很高兴,但是我猜答案是“没有办法确定”。
我编辑了问题,我真的不想知道main本身就是开始的。
最佳答案
我不明白您要解决什么问题。
在构建应用程序时,链接程序会添加启动代码,这是操作系统将程序加载到内存中时要执行的第一个代码。该代码将完成所有初始化工作,并在完成后调用main()函数。
如果您要用自己的代码替换此代码,则应检查编译器/链接器的内部细节(并确保您知道自己在做什么!!)。
如果您的问题是涉及多个进程,并且您需要知道某个进程是否已启动,则应使用适当的同步机制(可以是基础操作系统提供的一种同步机制,也可以是您自己创建的一种)。
关于c++ - 检测阶段的静态初始化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1761794/