-1

例如,我有以下代码:

#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

如果我用文字替换下标中的 MAX_CLIENTS 100,那么错误就消失了。

为什么?

4

4 回答 4

5

;in是多余的#define MAX_CLIENTS 100;,删除它,你应该没问题。

请记住,这#define是一个预处理器命令,它替换MAX_CLIENTS100;- 你不想要分号,只有 100。

于 2012-12-27T12:22:43.173 回答
5

问题是您定义中的尾随分号,这会导致宏扩展为

char* pick[100;];
//            ^-- cause of compiler errors

从您的定义中删除分号,一切都应该很好。

于 2012-12-27T12:23:13.720 回答
2

它应该是 :

#define MAX_CLIENTS 100
于 2012-12-27T12:28:07.427 回答
2

预处理器指令不应以分号结尾。

如果你这样做,它就会成为一个声明。

删除宏末尾的分号可以帮助您..

于 2012-12-27T12:39:40.847 回答