现象描述
在C语言中,通过enum对数组进行索引,出现报错
但玄学的是,相同的代码在data.h中不报错,CV到lists.h中就报错Is not a variable了!
在lists.h中编写的报错代码,扔到data.h中又不报错了?!
报错信息:constant + (如下文的LS) + is not a variable
data.h中


lists.h中


源代码
在data.h中不报错但是lists.h中报错的代码:
// 各类文字
enum {
FATAL_ERR,
CMD_NOT_FOUND,
VAR_NOT_FOUND,
KEY_NOT_FOUND,
FUNC_NOT_FOUND,
WRONG_PASSWORD
};
const char *shellText[] = {
[FATAL_ERR] =
"Shell fatal error!",
[CMD_NOT_FOUND] =
"Command not found!",
[VAR_NOT_FOUND] =
"Variable not found!",
[KEY_NOT_FOUND] =
"Key not found!",
[FUNC_NOT_FOUND] =
"Function not found!",
[WRONG_PASSWORD] =
"Wrong password!"
};
// 所有命令的索引
enum {
LS,
CD
}JshCmdLists;
const char *cmdLists[] = {
[LS] =
"ls",
[CD] =
"cd"
};