我在 .cpp
文件 void functionA()
中声明了一个全局函数。我希望 functionA()
在启动前被调用一次(不在 main()
内)。我意识到,如果函数是 int functionB()
,我可以使用 static int A = functionB()
调用它。但是对于void
的返回值,我该怎么做呢?
谢谢
最佳答案
你把它放到一个全局对象的构造函数中:
void functionA();
namespace {
struct global_initializer {
global_initializer() {functionA();}
} the_global_initializer;
}
请注意,这具有全局初始化的共同缺点:虽然同一翻译单元中的全局变量按照其定义顺序进行初始化,但跨翻译单元的全局变量初始化顺序是未定义的。
此外,链接器可能会选择消除未引用的对象 (the_global_initializer
),这将阻止调用 functionA()
。
关于C++ 全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3665308/