gpt4 book ai didi

c++ - 内联函数的局部静态/线程局部变量?

转载 作者:IT老高 更新时间:2023-10-28 23:00:56 26 4
gpt4 key购买 nike

如果我在不同翻译单元中定义的内联函数中有一个静态局部变量或 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 吗?

最佳答案

是的,它总是同一个对象。作者:[dcl.fct.spec]/4:

An inline function with external linkage shall have the same address in all translation units. A static local variable in an extern inline function always refers to the same object. A type defined within the body of an extern inline function is the same type in every translation unit.

关于c++ - 内联函数的局部静态/线程局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172137/

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