c - 初始值设定项元素不是使用 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
会给我同样的错误。
解决方案
在 C 语言中,代码只能在函数内部执行。在全局范围内,只能使用常量表达式来初始化变量。
静态存储对象只能使用常量表达式进行初始化。
推荐阅读
- jenkins - 当工作由电子邮件触发时如何在 Jenkins 中获取 BUILD_USER_EMAIL
- java - 我的 JPanel 无法监听 keyEvents?
- django - 如何在 Django 应用程序和 React JS 应用程序之间执行单点登录?
- reactjs - 处理 react-hook-form 中的错误
- git - 修复错误的 git 状态(尝试重新应用隐藏的更改与冲突)
- arrays - 如何在 Json 字符串中隐藏没有记录的控件
- elasticsearch - X-Pack 401 Logstash 无法连接到 Elasticsearch
- php - 强制从 64 位 php 网站连接到 32 位访问数据库
- javascript - 从数组中删除重复值
- javascript - 在元素外单击时如何调用函数并避免在单击事件内触发单击?