相关疑难解决方法(0)

何时分配/初始化函数级静态变量?

我非常有信心在程序启动时分配(并初始化,如果适用)全局声明的变量.

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()是在第一次调用时初始化的?

c++ variables

82
推荐指数
5
解决办法
6万
查看次数

C++静态初始化vs __attribute __((构造函数))

例:

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关于构造函数属性的文档没有说明任何内容.)

c++ gcc static-initialization

17
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×2

gcc ×1

static-initialization ×1

variables ×1