我想了解像宏一樣的函數的想法,但是有幾點讓我很困惑。例如說我們有:像宏中的函數C
#define Max(a,b) ((a)>(b)) ? (a):(b))
,我把它像這樣
int i = Max(4,5);
這將評估條件表達式相當於a>b
?如果是,那麼a,否則b。但我很困惑,Max函數如何知道如何處理這些參數。與實際功能不同,該實現不是用調用程序中的代碼編寫的。定義陳述的權利是否對我這樣做?它對我來說只是一件新事物,我想確保我理解這裏發生的事情。
像宏一樣的函數的這個特殊部分讓我困惑。我知道這些類型的宏對於降低開銷成本很有用,因爲它們排除了在堆棧上節省內存的JSR RTS處理器指令。
這不是一個功能。宏實際上只是文本替換,在編譯器運行之前發生。 – 2013-03-22 16:37:22
[This](http://gcc.gnu.org/onlinedocs/cpp/Macro-Arguments.html)可能會有所幫助。 – ajp15243 2013-03-22 16:38:46
您是否意識到'?'是一個三元條件操作符? – 2013-03-22 16:39:30