为什么CONSTANT在下标中使用时会给我错误?

时间:2012-12-27 12:22:00

标签: c

例如,我有以下代码:

#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,则错误消失。

为什么?

4 个答案:

答案 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)

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

如果你这样做就成了一个声明..

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