【发布时间】:2015-08-23 22:22:58
【问题描述】:
如果我在不同翻译单元中定义的内联函数中有一个静态局部变量或 thread_local 局部变量,那么在最终程序中,标准是否保证它们具有相同的地址?
// TU1:
inline int* f() { static int x; return &x; }
extern int* a;
void sa() { a = f(); }
// TU2:
inline int* f() { static int x; return &x; }
extern int* b;
void sb() { b = f(); }
// TU3:
int *a, *b;
void sa();
void sb();
int main() { sa(); sb(); return a == b; }
上面的总是返回 1 吗?
【问题讨论】: