我有如下简单程序:
int main()
{
int x = 5;
static int y = x;
return (0);
}
使用gcc编译时,static int y = x;
这一行会产生错误,错误信息为 "initializer element is not constant"。我猜测这是由于 y
是一个静态变量,在编译时需要知道它在存储空间(data/bss)中的位置以及初始值。
然而,当使用g++编译时,没有任何错误,并且程序正常运行(打印出5)。
我的问题如下:
- 我的猜测正确吗?
- 如果是的话,在C++中为什么能够对静态变量进行这样的初始化?
gcc
和g++
。不幸的是,“GCC”是两者的通用名称,但是gcc
命令默认构建C,而g++
则构建C ++。这种差异还有更多,但我从未深入研究过,因此无法很好地解释它。 - Yksisarvinen