让我举例说明,
int a = 100;
int b = a;
int main(int argc, char **argv, char ** env)
{
printf("The value of b=%d\r\n",b);
return 0;
}
现在,我得到了预期的编译错误。
[joshis1@localhost global_var]$ gcc global_var.c -o global_var.out
global_var.c:4:1: error: initializer element is not constant
int b = a;
^
我想在这里学习的是为什么会出现错误?为什么编译器限制此操作。我了解初始化的全局变量存储在数据段中。编译器可以首先解析 a 的值,然后将相同的值赋给 b。为什么它缺少这个功能?编译器做起来复杂吗?此功能背后是否有任何理由或只是 C 的一个陷阱?