首頁  >  文章  >  後端開發  >  預處理器 #if 條件中未定義的常數:已定義或未定義的結果?

預處理器 #if 條件中未定義的常數:已定義或未定義的結果?

Linda Hamilton
Linda Hamilton原創
2024-11-10 13:25:02438瀏覽

Undefined Constants in Preprocessor #if Conditions: Defined or Undefined Results?

預處理器#if條件中未定義的常數:已定義或未定義的結果?

問題:

在 C/C 中,在預處理器 #if 條件中使用時,未定義常數的假定值是多少?這個假設是否可靠,或未定義的常數會產生不可預測的行為嗎?

答案:

根據 C99 標準,未定義的常數確實被假定為具有值0 用於評估 #if 條件。這在§6.10.1 ¶3:

中明確說明:「在執行了由於巨集擴展和定義的一元運算子而進行的所有替換後,所有剩餘的識別碼都將替換為pp- number 0。規定:

“由於巨集擴展而進行所有替換之後並且已執行定義的一元運算符,所有剩餘的標識符和關鍵字(除了true 和false)都將替換為pp-number 0。”

因此,您可以可靠地假設未定義的常數將被視為預處理器#if 條件中為0。

以上是預處理器 #if 條件中未定義的常數:已定義或未定義的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn