2017-02-17 83 views
-3

從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://stackoverflow.com/help/mcve)。尤其重要的是這個代碼是在文件範圍還是在塊範圍內,以及'prm.field1'等等。 –

回答

0

在C89中,初始化器列表必須是編譯時已知的常量表達式。 (但它在C99中工作)。因此你所做的不是正確的方法。您張貼的第二個片段肯定會起作用。

+0

非靜態變量的初始值並不一定是自C99以來的常量表達式,而OP說他們試過'-std = c99' –

+0

我知道,OP必須做錯了什麼。 @ M.M – Jarvis