C语言.数组的声明,其大小由宏#define给出

spi*_*ght 0 c arrays macros declaration c-preprocessor

我想知道为什么当我尝试使用#define我从编译器获取错误来声明数组时,使用文字而不是大小允许我这样做.

some_name.h:

#define size 10;

int* waitingBench[size];
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 7

你所拥有的将被预处理为:

int* waitingBench[10;];
//                  ^ notice this guy!
Run Code Online (Sandbox Code Playgroud)

从中删除分号#define.

(这size是一个非常糟糕的标识符#define.)


mah*_*mah 5

;从您的定义中删除.正如您目前所拥有的那样,这与int* waitingBench[10;];您所知道的不一致是等效的.

宏定义不是C指令,因此它们不需要用分号终止(除非使用行继续反斜杠,否则它们不能超过一行,并且它们不能与其他内容共享该行).