初始元素不可计算
问题描述:
从GCC 4.4.x到上升级GCC 4.7.0之后,我开始看到:初始元素不可计算
error: initializer element not computable at load time
以下片段:
int prm_arr[] = {prm.field1, prm.field2, prm.field3};
此代码工作得很好与gcc 4.4.x.我尝试使用-std=c99
选项,但它没有奏效。以下片段可能工作
prm_arr[0] = prm.field1;
prm_arr[1] = prm.field2;
prm_arr[2] = prm.field3;
但是,什么是触发这个错误?
答
在C89中,初始化器列表必须是编译时已知的常量表达式。 (但它在C99中工作)。因此你所做的不是正确的方法。您张贴的第二个片段肯定会起作用。
+0
非静态变量的初始值并不一定是自C99以来的常量表达式,而OP说他们试过'-std = c99' –
+0
我知道,OP必须做错了什么。 @ M.M – Jarvis
请发布[MCVE](http://stackoverflow.com/help/mcve)。尤其重要的是这个代码是在文件范围还是在块范围内,以及'prm.field1'等等。 –