5
考慮變量宏宏擴展以下Ç(忽略雙副作用的問題):與參數與具有相同名稱
#define max(a, b) (a>b?a:b)
int main(void){
int max = max(5,6);
return max;
}
GCC的預處理器輪流到這一點:
int main(void){
int max = (5>6?5:6);
return max;
}
這是相當不錯的,因爲你不必擔心max
和max()
之間無意的碰撞。 GCC manual說:
類似函數的宏只有在它的名字出現時帶有一對括號後才被展開。如果你只是寫出這個名字,那麼它就被單獨留下了。
這是標準化還是隻是按照慣例做的事情?
我很困惑。它看起來像海灣合作委員會榮幸的最大宏,並沒有改爲調用真正的最大功能。 – octopusgrabbus
@octopusgrabbus:什麼'max'功能? –
發現了GCC手冊中的相關部分,但我仍然不知道這是標準化還是非正式的約定 – mensi