C - 初始化元素不是常量

时间:2015-06-02 16:57:37

标签: c

以下是我在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)

当尝试编译时,编译器说“初始化元素不是常量”,我看不出原因。发生了什么事?

1 个答案:

答案 0 :(得分:6)

dictionary_load_lang()是一个函数,因此是一个非常数。您不能将非常量用于静态存储变量(读取:全局和/或static):

根据C99标准:第6.7.8节:

  

具有静态的对象的初始值设定项中的所有表达式   存储持续时间应为常量表达式或字符串文字。

但是,如果在函数内和非静态变量中,可以进行这样的初始化。