我非常有信心在程序启动时分配(并初始化,如果适用)全局声明的变量.
int globalgarbage;
unsigned int anumber = 42;
Run Code Online (Sandbox Code Playgroud)
但是在函数中定义的静态的呢?
void doSomething()
{
static bool globalish = true;
// ...
}
Run Code Online (Sandbox Code Playgroud)
globalish分配的空间是什么时候?我猜测程序什么时候开始.但是它也被初始化了吗?或者它doSomething()是在第一次调用时初始化的?
例:
struct Foo { Foo() { printf("foo\n"); } };
static Foo foo;
__attribute__((constructor)) static void _bar() { printf("bar\n"); }
Run Code Online (Sandbox Code Playgroud)
它是确定性的foo还是bar首先印刷的?
(我希望并且期望静态对象的构造函数总是先执行但不确定,并且GCC关于构造函数属性的文档没有说明任何内容.)