使用C时,初始值设定项元素不是编译时常量
a、 h a、 c使用C时,初始值设定项元素不是编译时常量,c,initialization,global-variables,constant-expression,storage-duration,C,Initialization,Global Variables,Constant Expression,Storage Duration,a、 h a、 c list是一种简单的void*链表结构 当我想创建FunctionNames全局变量时,代码编辑器会给我以下错误:a.h:8:29:error:initializer元素不是编译时常量。如果我以前没有使用常量 FunctionNames代码编辑器给出了相同的错误。此声明 list* FunctionCreate() { list* FunctionNames = listCreate(sizeof(char*)); listPushHead(FunctionN
list
是一种简单的void*
链表结构
当我想创建FunctionNames
全局变量时,代码编辑器会给我以下错误:a.h:8:29:error:initializer元素不是编译时常量
。如果我以前没有使用常量
FunctionNames
代码编辑器给出了相同的错误。此声明
list* FunctionCreate() {
list* FunctionNames = listCreate(sizeof(char*));
listPushHead(FunctionNames,"s");
return FunctionNames;
}
是具有静态存储持续时间的文件范围声明,可由常量编译时表达式初始化
来自C标准(6.7.9初始化)
4具有静态属性的对象的初始值设定项中的所有表达式
或线程存储持续时间应为常量表达式或字符串
文字
这句话
list* const FunctionNames = FunctionNamesCreate();
不是编译时常量表达式。函数调用在运行时求值
来自C标准(6.6常量表达式)
3常量表达式不得包含赋值、增量、,
减量、函数调用或逗号运算符,除非它们是
包含在未计算的子表达式中
无需在文件范围内声明指针。此外,当您在标题中放置带有外部链接的指针定义时,这是一种糟糕的方法。例如在main中声明指针。此声明
list* FunctionCreate() {
list* FunctionNames = listCreate(sizeof(char*));
listPushHead(FunctionNames,"s");
return FunctionNames;
}
是具有静态存储持续时间的文件范围声明,可由常量编译时表达式初始化
来自C标准(6.7.9初始化)
4具有静态属性的对象的初始值设定项中的所有表达式
或线程存储持续时间应为常量表达式或字符串
文字
这句话
list* const FunctionNames = FunctionNamesCreate();
不是编译时常量表达式。函数调用在运行时求值
来自C标准(6.6常量表达式)
3常量表达式不得包含赋值、增量、,
减量、函数调用或逗号运算符,除非它们是
包含在未计算的子表达式中
无需在文件范围内声明指针。此外,当您在标题中放置带有外部链接的指针定义时,这是一种糟糕的方法。例如,在main中声明指针。在C语言中,代码只能在函数内部执行。在全局范围中,只能使用常量表达式初始化变量
静态存储对象只能使用常量表达式初始化。在C语言中,代码只能在函数内部执行。在全局范围中,只能使用常量表达式初始化变量
静态存储对象只能使用常量表达式初始化。作为全局
常量创建的内容有限制。请阅读并查看。你的C代码违背了C的规则。你只能从另一个函数中调用一个函数。C不是C++,如果你用“代码”>“函数创建< /COD>和 ListPuthHead <代码>显示完整代码,我可以改进回答:你可以创建一个全局代码< const <代码> >。你的C代码违背C的规则,你只能从另一个函数中调用函数。C不是C++,如果你用“代码”>“函数创建< /COD>”和“代码> ListPuthHead <代码>显示完整代码,我可以改进答案。