int main ( )
{
int a = 1 ;
static int b = a ;
}
这段代码将 gcc 4.3.2 中的错误视为
错误:初始化元素不是常量。
但它在 g ++ 4.3.2 上运行良好。 有人请解释为什么这不是g ++ 4.3.2中的错误。
答案 0 :(得分:19)
因为它在C ++中有效(在C中无效)。
(C ++ 11,6.7p4)“块范围的常量初始化(3.6.2) 具有静态存储持续时间的实体(如果适用)在之前执行 首先输入它的块。 [...]否则这样的变量是 初始化第一次控制通过其声明; 这样的变量在完成后被认为是初始化的 它的初始化。“