我试图理解像宏这样的函数的概念,但是有几点让我感到困惑。例如说我们有:
#define Max(a,b) ((a)>(b)) ? (a):(b))
我这样称呼它
int i = Max(4,5);
这将评估一个相当于a>b
?的条件表达式 如果是则a,否则为b。但我对 Max 函数如何知道如何处理参数感到困惑。与实际函数不同,实现不是用调用程序中的代码编写的。定义语句右侧的语句是否为我执行此操作?这对我来说只是一件新事物,我想确保我了解这里发生的事情。
像宏这样的特殊功能部分让我感到困惑。我知道这些类型的宏对于降低开销成本很有用,因为它们排除了 JSR RTS 处理器指令,从而节省了堆栈上的内存。