Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
int main ( ) { int a = 1 ; static int b = a ; }
这段代码在gcc 4.3.2中给出了错误
错误:初始化元素不是常量。
但它在g++ 4.3.2上运行良好。有人请解释为什么这在 g++ 4.3.2 中没有给出错误。
因为它在 C++ 中有效(在 C 中无效)。
(C++11, 6.7p4)“具有静态存储持续时间的块范围实体的常量初始化(3.6.2),如果适用,在其块首次进入之前执行。[...]否则这样的变量是在控件第一次通过其声明时初始化;这样的变量在其初始化完成时被认为已初始化。"