C と C の両方で有効なコードは、言語固有のコンパイラーでは異なる動作をしますか?
C と C には多くの類似点がありますが、顕著な違いがあります存在する。これにより、両方の言語の有効なコードが、各言語の特定のコンパイラを使用してコンパイルされたときに異なる動作を示す可能性があるかどうかという疑問が生じます。
プリプロセッサ関連のハックを無視し、実装定義の側面が均一であると仮定すると、そのような動作に矛盾が生じるシナリオの 1 つとなります。関数呼び出しとオブジェクト宣言の処理が発生します。
このコンテキストでは、以下の例は C と C の間の相違を示しています。
C では、このコードは、すぐに破棄される一時的な f オブジェクト。したがって、出力は生成されません。
対照的に、C90 では、宣言されていない関数を呼び出すことができます。その結果、C90 コンパイラでコンパイルすると、コードは「hello」を出力します。
この違いは、C90 では宣言 f() が関数呼び出しとして扱われるのに対し、C ではそれが関数呼び出しとして解釈されるという事実に根ざしています。 f オブジェクトの宣言。この違いは、プログラミング言語ごとに異なる動作を引き起こす可能性がある微妙なニュアンスを浮き彫りにします。
以上がC と C の両方で有効なコードは、言語固有のコンパイラーでコンパイルすると異なる動作をする可能性がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。