有什么办法可以查出你的程序的main()函数是否已经进入了吗?

问题描述 投票:0回答:1

我在静态初始化顺序失败方面遇到了一些问题。我有一个类,在我的程序进入 main 之前不应实例化/构造该类。这是因为当程序进入main时所有静态初始化已经完成。显然,一个简单的答案是不要将该类型的对象实例化/构造/初始化为静态变量,但我想要检查以防意外发生并且存在我无法发现的错误。

我想过有一个标志 bHasEnteredMain ,我可以将其设置为 main 中的第一件事,但这没有帮助,因为没有初始化顺序,因此该标志在该内存中具有相当于 true 的垃圾,所以它没有用。有办法做到这一点吗? C++ 标准或编译器中是否有内置标志或类似标志可供我用作检查?

c++ static-initialization
1个回答
1
投票

您可以将全局布尔值设置为

false
,然后在 main 中将其更改为
true

全局平凡对象是在 C++ 运行时开始初始化非平凡对象之前构造的。

© www.soinside.com 2019 - 2024. All rights reserved.