首頁 > 後端開發 > C++ > 主體

C 和 C 中的 #if 條件中未定義常數的計算結果是否為 0?

Susan Sarandon
發布: 2024-11-15 12:43:02
原創
470 人瀏覽過

Do Undefined Constants Evaluate to 0 in #if Conditions in C and C  ?

C 和C 中的未定義常數和#if 條件評估

在預處理器邏輯中,宏和常數通常起著至關重要的作用。在處理 #if 條件中未定義的常數時,會出現一種常見情況。在這裡,我們將探討依賴這些未定義常數的可預測行為是否有效。

問題:

開發人員通常假設未定義常數的值為在 #if 評估中使用時為 0。這個假設可靠嗎?還是我們應該期望未定義常量產生未定義的行為?

答案:

是的,您可以依賴這個假設。 C99 標準在§6.10.1 ¶3 中明確規定:

由於巨集擴充和定義的一元運算子執行所有替換後,所有剩餘識別碼都替換為pp-number 0

類似地,C 標準(§16.1 ¶4)規定:

在執行了由於巨集擴展和定義的一元運算子而進行的所有替換後,所有剩餘的識別碼和關鍵字(除了true 和false)替換為pp-number 0

換句話說,在巨集擴充和其他預處理步驟之後,#if 條件中出現的任何未定義的識別碼或常數都會自動替換為值0。此行為在各個版本中都是一致的C 和C .

這種可預測的行為使開發人員可以方便地在#if 條件中使用未定義的常數作為標誌或占位符,而不會帶來未定義的結果或錯誤的風險。當預處理階段之前未定義未定義常數時,編譯器預設將其視為 0。

以上是C 和 C 中的 #if 條件中未定義常數的計算結果是否為 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板