質問:
C/C では、プリプロセッサの #if 条件で使用される場合、未定義の定数の想定される値は何ですか?この仮定は信頼できますか? それとも、未定義の定数が予測不能な動作を引き起こす可能性がありますか?
答え:
C99 標準によれば、未定義の定数は実際に値を持つと想定されています。 #if 条件を評価する場合は 0。これは、§6.10.1 ¶3 で明示的に述べられています:
「マクロ展開と定義された単項演算子によるすべての置換が実行された後、残りのすべての識別子は pp 番号 0 で置き換えられます。」
同様に、C 標準 (§16.1 ¶4) では次のように述べられています。
「すべての置換後」マクロ展開と定義された単項演算子が実行されたため、true と false を除く残りのすべての識別子とキーワードは pp 番号 0 に置き換えられます。"
したがって、未定義の定数は確実に仮定できます。プリプロセッサの #if 条件では 0 として扱われます。
以上がプリプロセッサ #if 条件の未定義定数: 結果は定義済みか未定義か?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。