8

我犯了一个愚蠢的错误(忘记了分号,最近 Python 太多了),但从 gcc 收到了一条有趣的错误消息:“expected ',' or ';' 在‘如果’之前”。

我知道这些错误消息只是为可能的源代码提供了一个“上限”,但我想知道 C 中是否有任何构造使得“if”标记真的出现在 ',' 之后而不是 ';' 之后。

4

3 回答 3

6

After 不一定是紧随其后。错误信息更多:'我刚刚打了一个'if'构造。在这一点上,我期待(上一个)语句的结束,或者列表中的下一个项目。其中一件事必须在这个'如果'之前,所以我让你知道'

于 2012-12-04T12:05:29.267 回答
5

我想知道C中是否有任何构造使得“if”标记真的出现在','之后而不是';'之后。

根据C BNF 语法,anif总是语句的开头。所以不,它不能以,.

于 2012-12-04T12:10:39.767 回答
1

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

我猜 gcc 解析器正在寻找if 语句之前的序列点。分号处有一个序列点,但也有一个在表达式中使用逗号运算符的地方。因此,不知何故,整个语句和表达式中错误的错误打印似乎是相同的。

于 2012-12-04T12:16:35.323 回答