初始元素不可计算

问题描述:

从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; 

但是,什么是触发这个错误?

+2

请发布[MCVE](http://*.com/help/mcve)。尤其重要的是这个代码是在文件范围还是在块范围内,以及'prm.field1'等等。 –

在C89中,初始化器列表必须是编译时已知的常量表达式。 (但它在C99中工作)。因此你所做的不是正确的方法。您张贴的第二个片段肯定会起作用。

+0

非静态变量的初始值并不一定是自C99以来的常量表达式,而OP说他们试过'-std = c99' –

+0

我知道,OP必须做错了什么。 @ M.M – Jarvis