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

tru*_*ktr -1 c

例如,我有以下代码:

#define MAX_CLIENTS 100;

void main() {
    char* pick[MAX_CLIENTS];
    int* points[MAX_CLIENTS];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

试图编译它会引发这些错误:

file.c:4: error: expected ‘]’ before ‘;’ token
file.c:5: error: expected ‘]’ before ‘;’ token
Run Code Online (Sandbox Code Playgroud)

如果我使用文字替换下标中的MAX_CLIENTS 100,则错误消失.

为什么?

ami*_*mit 5

;#define MAX_CLIENTS 100;是多余的,删除它,你应该罚款.

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


sim*_*onc 5

问题是您的define上的尾部分号,这会导致宏扩展为

char* pick[100;];
//            ^-- cause of compiler errors
Run Code Online (Sandbox Code Playgroud)

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