我犯了一个愚蠢的错误(最近忘了分号,太多Python),但是从gcc得到了一个有趣的错误信息:“expected','或';'在“如果”之前。
我知道这些错误消息只为可能的源代码提供了“上限”,但是我想知道C中是否有任何构造使得“if”令牌真正位于','之后,而不是'之后' ;”
答案 0 :(得分:6)
在之后不一定之后。错误信息更多:'我刚刚点击'if'结构。此时我期待结束(前一个)语句或列表中的下一个项目。其中一件事必须在'if'之前,所以我让你知道'
答案 1 :(得分:5)
我想知道C中是否有任何构造,使得“if”令牌真正位于','之后,而不是';'之后。
根据C BNF grammar,if
始终在语句的开头。所以不,它不能以,
开头。
答案 2 :(得分:1)
不,没有逗号可以出现在if
语句之前的情况。所以这必须是gcc中的编译器错误/错误。
我猜想gcc解析器在if语句之前正在寻找 sequence point 。分号处有一个序列点,但也有一个在表达式中使用逗号运算符的地方。所以看起来整个语句和表达式中的错误打印错误是不一样的。