我犯了一个愚蠢的错误(忘记了分号,最近 Python 太多了),但从 gcc 收到了一条有趣的错误消息:“expected ',' or ';' 在‘如果’之前”。
我知道这些错误消息只是为可能的源代码提供了一个“上限”,但我想知道 C 中是否有任何构造使得“if”标记真的出现在 ',' 之后而不是 ';' 之后。
After 不一定是紧随其后。错误信息更多:'我刚刚打了一个'if'构造。在这一点上,我期待(上一个)语句的结束,或者列表中的下一个项目。其中一件事必须在这个'如果'之前,所以我让你知道'
我想知道C中是否有任何构造使得“if”标记真的出现在','之后而不是';'之后。
根据C BNF 语法,anif
总是在语句的开头。所以不,它不能以,
.
不,没有逗号可以出现在if
语句之前的情况。所以这一定是 gcc 中的编译器错字/错误。
我猜 gcc 解析器正在寻找if 语句之前的序列点。分号处有一个序列点,但也有一个在表达式中使用逗号运算符的地方。因此,不知何故,整个语句和表达式中错误的错误打印似乎是相同的。