對于編譯語言來說濒持,所有的宏都是在預編譯的時候被展開的茉继,所以在lex進行
詞法掃描生成Token谎脯,詞法分析過程之前,所有的宏都已經(jīng)被展開完成了请祖。
對于Xcode订歪,預處理或者預編譯階段是可以直接查看的。
image
隨便寫一個宏肆捕,然后打開Xcode右上方的Assistant刷晋,選擇“Preprocess”就可以看到該文件預處理之后的樣子了∩髁辏可以看到左邊的@weakify(self) 被轉(zhuǎn)換成了右邊的兩行代碼了眼虱。
關于這個Xcode的這個功能還有2點補充說明:
1.不同階段的Preprocessed可能不同,要根據(jù)你的目標去選擇預處理的條件席纽。
image
比如這里就有5種預編譯的種類可以選擇捏悬。
2.宏經(jīng)過預編譯之后出來的代碼,是可以用來檢測宏寫的是否正確的润梯,但是無法看到宏被展開的具體過程过牙。這意味著我們可以通過Xcode這個功能來查看宏的作用,但是無法知道宏的具體實現(xiàn)纺铭。具體實現(xiàn)還是需要通過查看源碼來分析寇钉。