【发布时间】:2016-06-03 00:15:25
【问题描述】:
我对 C 很陌生,但遇到了一些问题。
我有以下结构定义:
struct env {
struct env *next;
char varName[8];
int n;
};
我想最终在我的一些函数中创建多个这样的结构,所以我创建了一个函数来做到这一点:
struct env *mkEnv(char c[8] , int value , struct env *toadd){
struct env *enviroment = malloc(sizeof(struct env));
enviroment->n = value;
enviroment->next = toadd;
strcpy(enviroment->varName , c);
return enviroment;
}
我想在全局范围内创建一个这样的结构,它具有一些常量值,并且最初具有指向下一个结构 NULL 的指针。
所以我做了这样的事情:
//not in a function
struct env *list = mkEnv("pot" , 0 , NULL);
//Beginning of a function
int eval(struct expression *exp){
... // code here that might add a new structure to the pointer of list
}
我收到以下错误:
evalexp.c:116:20:错误:初始化元素不是编译时 常量 struct env *list = mkEnv("p" , 0 , NULL);
我在谷歌上搜索错误消息后了解此错误的含义,但是 有没有办法在函数之外的某处创建结构而不会出现此编译错误?
为了更清楚: 我想创建一个如上所述的结构(好像它是列表的头部)。这样我的所有功能都可以访问并向其中添加内容。也就是将其解析为列表和/或在该列表中添加新元素。
提前致谢!
【问题讨论】:
标签: c struct global compile-time