gpt4 book ai didi

c++ - 如何检查主函数是否被调用?

转载 作者:行者123 更新时间:2023-11-28 01:05:48 25 4
gpt4 key购买 nike

我想写一些依赖静态变量值的代码。所以我想添加一些检查以消除从其他静态变量构造函数调用此代码的可能性。并永远防止静态初始化顺序失败。例如:

static Foo foo = Foo();

// this function should be called ONLY from main program conrol flow
// ONLY after all static variable initialization was complete! ONLY!
int bar()
{
#ifdef _DEBUG
if(! CRT_was_initialized_and_main_function_was_called ) ShowErrorMessage();
#endif
if(foo.somefunction() == 2) return 0; else return -1;
}

//here inattentive programmer will caught error message during debug
const int barConstant = bar();

int main()
{
//now all is fine
const int barConstant = bar();
}

我该怎么做?如何检查我的函数是否在主函数之后被调用?

更新:Foo 对象有一个非常重的初始化代码,它可能很慢甚至会抛出异常

更新 2:这样做没有生命危险。大多数情况下,条形图功能之前的评论都可以正常工作。我对某种调试检查感兴趣,以惩罚程序调试版本中粗心的程序员,而不是手动执行此操作。它可能是非标准的方式,比如调用一些只能在 MSVC 上运行的疯狂内置函数。

最佳答案

创建一个全局 bool 标志,指示是否调用了 main,最初为 false。在 main() 中将其更改为 true,并且仅在此处进行更改。这不是一个优雅的解决方案,但也是一个非常奇怪的问题的解决方案。

关于c++ - 如何检查主函数是否被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com