开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev c++,VS
问题(Question):
一开始是遇到了这个问题
int a = 10;
int b = a;
int main(){return 0;}
在C是不行的,错误讯息: initializer element is not constant
C++则没问题
所以我改成
const int a = 10;
int b = a;
int main(){return 0;}
依旧是不行
查了一下知道了大概的理由,但还是有点不知所以
看完后的理解是:
C在初始化全域变量时需要constant expressions,因为他是存在Data segment
然后在C++初始化全域变量时则不需要
至于加了const后还是不行则是因为在C里不算是标准的constant expressions
他需要compile-time constant(全域变量是在compile time初始化的)
(以上是从stackoverflow不同回答拼凑出来的想法
不知道有没有哪里理解错?或是能帮我多做补充的
谢谢!