2015-06-02 54 views
0

這裏是我的代碼在C片段:Ç - 初始化元件不是恆定

const char *d = "dictionary.dict"; 

struct dictionary *dict = 
     dictionary_load_lang(d); // Compile error here 

類型dictionary_load_lang的()是struct dictionary *dictionary_load_lang(const char *lang)

當試圖編譯編譯器說「初始化元素不是常量」,我看不出爲什麼。這是怎麼回事?

+3

該作業是否在全球範圍內完成? – edmz

+0

是的,也許這就是問題所在。 – qiubit

回答

6

dictionary_load_lang()是一個函數,因此是一個非常數。你不能使用非常量靜態存儲變量(閱讀:全球和/或static):

按C99標準:第6.7.8:

所有在初始化表達式具有靜態存儲持續時間的對象應該是常量表達式或字符串文字。

但是,如果在一個函數內和一個非靜態變量內,你可以做這樣的初始化。