C语言GCC复合语句宏调用时出现expected expression错误如何解决
报错核心诱因
本次编译报错由TAB_SIZE宏的语法定义错误直接导致:
C语言的#define宏定义语法中,标识符与替换文本之间不需要额外加等号,你错误写为#define TAB_SIZE = NUM_EL -1,会让预编译阶段把所有TAB_SIZE直接替换为= 10 -1。
代入宏内的for循环判断条件i <= TAB_SIZE后,代码会被展开为i <= = 10 -1,连续两个等于号不符合C语法规则,编译器无法识别该非法表达式,因此抛出expected expression报错。
另外你原有代码中for循环末尾多写的分号属于逻辑bug,虽然不是触发本次编译报错的原因,但会导致for循环直接空转到i越界后才执行判断逻辑,也需要一并删除。
内容的提问来源于stack exchange,提问作者Théophile Leroy
相关产品推荐
相关产品推荐

