使用宏的原因之一是为了简化代码和提高可读性。
假设你在写一个程序,需要多次计算一个长方形的长和宽的乘积(面积)。你可能会写一个函数来做这个计算:
int calculate_area(int length, int width) {
return length * width;
}
然后每次需要计算面积时,你都会调用这个函数:
int area1 = calculate_area(10, 20);
int area2 = calculate_area(5, 15);
但是,如果你发现这个计算非常频繁,而且这个函数非常简单,你可能会想:“每次调用函数都有一定的开销,如果能够避免这个开销就好了。” 这时,你可以考虑使用宏:
#define AREA(length, width) ((length) * (width))
当你编译程序时,预处理器会看到 AREA(10, 20) 这样的宏调用,并将其替换为 (10 * 20)。这样,编译器最终看到的代码是
int area1 = AREA(10, 20);
int area2 = AREA(5, 15);
因为没有函数调用的开销,所以这样可能会更快一些。
使用宏的注意事项
-
宏名最好用大写
-
宏只是文本替换,并不是全局变量或局部变量
-
宏的末尾不能加
;
号 -
""
内的不会被替换