Function 为什么宏比等价定义的函数占用更多的空间?

Function 为什么宏比等价定义的函数占用更多的空间?,function,memory,macros,c-preprocessor,Function,Memory,Macros,C Preprocessor,摘自,第309页: 因为宏是由 在预处理器中,它们不可避免地比 等价定义的函数 在哪种意义上,宏比等价定义的函数占用更多的空间?正如您的引文所述,宏的文本被预处理器直接替换到代码中。e、 g #define ABSOLUTE_VALUE( x ) ( ((x) < 0) ? -(x) : (x) ) int absoluteSum(int a, int b) { return ABSOLUTE_VALUE(a) + ABSOLUTE_VALUE(b); } #定义绝对_值(x)

摘自,第309页:

因为宏是由 在预处理器中,它们不可避免地比 等价定义的函数


在哪种意义上,宏比等价定义的函数占用更多的空间?

正如您的引文所述,宏的文本被预处理器直接替换到代码中。e、 g

#define ABSOLUTE_VALUE( x ) ( ((x) < 0) ? -(x) : (x) )

int absoluteSum(int a, int b) {
    return ABSOLUTE_VALUE(a) + ABSOLUTE_VALUE(b);
}
#定义绝对_值(x)((x)<0)?-(x):(x))
绝对总和整数(整数a,整数b){
返回绝对值(a)+绝对值(b);
}
变成:

int absoluteSum(int a, int b) {
    return ( ((a) < 0) ? -(a) : (a) ) + ( ((b) < 0) ? -(b) : (b) );
}
int绝对和(int a,int b){
回报率((a)<0)-(a):(a))+((b)<0)-(b):(b));
}
经过预处理。传统的函数调用不能做到这一点。如果在代码中使用宏两次,宏的代码将被替换两次,从而增加内存占用。对于传统函数,宏的代码只被查找和编译一次,如下所示

int abs(int value) {
    return ( ((value) < 0) ? -(value) : (value) );
}

int absoluteSum(int a, int b) {
    return abs(a) + abs(b);
}
int abs(int值){
返回(((值)<0)?-(值):(值));
}
绝对总和整数(整数a,整数b){
返回abs(a)+abs(b);
}