例如,我有以下代码:
#define MAX_CLIENTS 100;
void main() {
char* pick[MAX_CLIENTS];
int* points[MAX_CLIENTS];
return 0;
}
尝试编译它会引发这些错误:
file.c:4: error: expected ‘]’ before ‘;’ token
file.c:5: error: expected ‘]’ before ‘;’ token
如果我使用文字100
替换下标中的MAX_CLIENTS,则错误消失。
为什么?
答案 0 :(得分:5)
;
中的#define MAX_CLIENTS 100;
是多余的,删除它,你应该没事。
请记住,#define
是预处理器命令,用MAX_CLIENTS
替换100;
- 您不希望分号在那里,只有100分。
答案 1 :(得分:5)
问题是您的define上的尾部分号,这会导致宏扩展为
char* pick[100;];
// ^-- cause of compiler errors
从你的定义中删除分号,一切都应该很好。
答案 2 :(得分:2)
它应该是:
#define MAX_CLIENTS 100
答案 3 :(得分:2)
预处理程序指令不应以分号结尾。
如果你这样做就成了一个声明..
删除宏末尾的分号可以帮助你..