重新定義C 預處理中的關鍵字:標準合規性
使用#define 重新定義語言關鍵字引發了開發者社區的爭論。本文深入探討了有關此實踐的標準。
與重新定義的關鍵字的標準一致性
根據C 標準(§17.4.3.1.1/2),如果翻譯單元包含標準庫頭,則符合標準的C 預處理器無法重新定義關鍵字。對於沒有標準頭的翻譯單元,此限制被取消。
在 C 0x 中,上述段落的第二句似乎完全禁止重新定義關鍵字,導致混亂。不過,Ken Bloom 澄清說,C 0x 中的規則並沒有改變。文本只是以可能引起誤解的方式重新排列。
不合格的後果
如果 C 程式重新定義語言關鍵字,它本質上並不變得不合格。但是,不保證它可以跨不同編譯器或平台移植。此外,如果此類程式嘗試與期望原始關鍵字定義的標準庫標頭進行交互,則可能會遇到意外行為或錯誤。
以上是C 預處理器可以重新定義關鍵字並且仍然符合標準嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!