2016-12-07 49 views

回答

15

考慮下面的代碼:

#ifdef foo 
    foo(); 
#endif 

如果你想要一個像上面的代碼段調用函數foo,你需要定義foo。但是,如果你只是

#define foo 

那麼函數foo名稱將與空令牌替換,並且第一個片段進行預處理,只是();。但是,如果你

#define foo foo 

那麼第一個片段將預處理到foo();因爲它應該。

+0

好的,這是一個很好的例子!謝謝 – IljaBek

6

欺騙以確保#if defined(__arch_swahb32)通過但不會取代。 (通常用來實施宏觀型功能)

+0

謝謝你的回答! – IljaBek

相關問題