为什么在c++中声明带有非常量的静态变量不会给出错误
Why Declaration of static variable with non-constant does not give Error in g++
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)具有静态存储持续时间的实体(如果适用)在之前执行首先输入它的块。[…否则,这样的变量是在控件第一次通过其声明时初始化;完成时,这样的变量被认为是初始化的其初始化。"
相关文章:
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 模板基类中的静态变量
- 类和静态变量
- 不同作用域中的静态变量和全局变量
- 静态变量声明和定义
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 在类中继承静态变量?
- "local scope"中的 C++ 初始化静态变量
- 使用静态变量的递归调用的不同输出
- 静态 constexpr 类成员变量对多线程读取是否安全?
- C++:是否可以使用非静态成员变量模板?
- 复制文件流C++静态变量
- 如何在复杂继承中访问静态成员变量
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 跨模板化函数编译的静态变量
- constexpr函数中的静态constexpr变量
- 静态成员变量不会由 gettext 转换
- 从 exe 和 dll 访问静态库中的 extern 变量
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- 用于定义公共变量静态常量整数的C++标准