首页 > 解决方案 > 初始值设定项元素不是使用 C 的编译时常量

问题描述

list* FunctionNamesCreate();
list* const FunctionNames = FunctionNamesCreate();

交流

list* FunctionCreate() {
    list* FunctionNames = listCreate(sizeof(char*));
    listPushHead(FunctionNames,"s");
    return FunctionNames;
}

list是简单的void*链表结构

当我想创建FunctionNames全局变量时,代码编辑器给我以下错误: a.h:8:29: error: initializer element is not a compile-time constant. const如果我在代码编辑器之前 不使用,FunctionNames会给我同样的错误。

标签: cinitializationglobal-variablesconstant-expressionstorage-duration

解决方案


在 C 语言中,代码只能在函数内部执行。在全局范围内,只能使用常量表达式来初始化变量。

静态存储对象只能使用常量表达式进行初始化。


推荐阅读