为什么在c++中声明带有非常量的静态变量不会给出错误

Why Declaration of static variable with non-constant does not give Error in g++

本文关键字:变量 静态 错误 出错 常量 c++ 声明 非常 为什么      更新时间:2023-10-16
 int main ( )
 {
       int a = 1 ;
       static int b = a ;
 }
这段代码给出了gcc 4.3.2 as 的错误

错误:初始化器元素不是常量。

但是在g++ 4.3.2上运行良好。

因为它在c++中有效(而在C中无效)。

(c++ 11日6.7 p4)块作用域的常量初始化(3.6.2)具有静态存储持续时间的实体(如果适用)在之前执行首先输入它的块。[…否则,这样的变量是在控件第一次通过其声明时初始化;完成时,这样的变量被认为是初始化的其初始化。"