8

私はばかげた間違いをしました(セミコロンを忘れました、最近Pythonが多すぎます)が、gccから興味深いエラーメッセージが表示されました: "expected'、' or';' 'if'"の前。

これらのエラーメッセージが可能なソースコードの「上限」を提供することは知っていますが、「if」トークンが実際には「;」の後にではなく「、」の後に来るような構造がCにあるかどうかを知りたいです。

4

3 に答える 3

6

後は必ずしも直後ではありません。エラーメッセージは次のとおりです。'if'構文をヒットしました。この時点で、私は(前の)ステートメントの終わりか、リストの次の項目のどちらかを期待していました。それらの1つはこの「if」の前にある必要があるので、私はあなたに知らせています

于 2012-12-04T12:05:29.267 に答える
5

「if」トークンが実際には「;」の後にではなく「、」の後に来るような構造がCにあるかどうかを知りたいのですが。

C BNF文法によれば、anif常にステートメントの先頭にあります。したがって、前に。を付けることはできません,

于 2012-12-04T12:10:39.767 に答える
1

ifいいえ、ステートメントの前にコンマが表示される可能性はありません。したがって、これはgccのコンパイラのタイプミス/バグである必要があります。

gccパーサーはifステートメントの前にシーケンスポイントを探していると思います。セミコロンにはシーケンスポイントがありますが、式の中でtoコンマ演算子が使用されているシーケンスポイントもあります。したがって、ステートメントと式全体のエラーのエラー出力は、どういうわけか同じように見えます。

于 2012-12-04T12:16:35.323 に答える