预期的,或;之前如果

时间:2012-12-04 11:59:32

标签: c gcc

我犯了一个愚蠢的错误(最近忘了分号,太多Python),但是从gcc得到了一个有趣的错误信息:“expected','或';'在“如果”之前。

我知道这些错误消息只为可能的源代码提供了“上限”,但是我想知道C中是否有任何构造使得“if”令牌真正位于','之后,而不是'之后' ;”

3 个答案:

答案 0 :(得分:6)

在之后不一定之后。错误信息更多:'我刚刚点击'if'结构。此时我期待结束(前一个)语句或列表中的下一个项目。其中一件事必须在'if'之前,所以我让你知道'

答案 1 :(得分:5)

  

我想知道C中是否有任何构造,使得“if”令牌真正位于','之后,而不是';'之后。

根据C BNF grammarif 始终在语句的开头。所以不,它不能以,开头。

答案 2 :(得分:1)

不,没有逗号可以出现在if语句之前的情况。所以这必须是gcc中的编译器错误/错误。

我猜想gcc解析器在if语句之前正在寻找 sequence point 。分号处有一个序列点,但也有一个在表达式中使用逗号运算符的地方。所以看起来整个语句和表达式中的错误打印错误是不一样的。