理解字串化:巨集擴展的關鍵步驟
類C 語言中的字串化概念允許您將表達式轉換為字串。了解此過程中涉及的步驟對於有效地使用巨集至關重要。
問題:輸出差異
考慮以下巨集定義:
#define foo 4 #define str(s) #s
當您在程式碼中使用str(foo) 時,它將輸出“foo”,因為字串化(步驟1)是在文字擴展(步驟2).
但是,如果你定義一個額外的宏:
#define xstr(s) str(s)
並使用xstr(foo),輸出將令人驚訝地是“ 4”。這種差異需要探索字串化過程。
宏擴展的步驟
根據C 和C 標準,宏擴展的過程涉及幾個步驟:
將步驟套用於xstr(foo)
為什麼str(foo) 輸出"foo"
與xstr(foo) 相比,str(foo) 輸出"foo"因為:
因此,使用 xstr 這樣的輔助巨集可確保在字串化(步驟 1)之前執行文字擴充(步驟 2),從而實現正確的字串轉換。
以上是為什麼類別 C 巨集擴充中 `xstr(foo)` 輸出'4”,而 `str(foo)` 輸出'foo”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!