Я довольно новичок в 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);
Я понимаю, что означает эта ошибка, после поиска сообщения об ошибке, но есть ли способ создать структуру где-то вне функции, не получая этой ошибки компиляции?
Чтобы было понятнее: я хочу создать структуру, как определено выше (как если бы это был заголовок списка). так что все мои функции могут получить доступ и добавить к нему материал. Это разбор его как списка и/или добавление новых элементов в этот список.
Заранее спасибо!