有的时候宏定义可以实现类似函数的功能,例如:
#include <stdio.h>
#define max(A, B) ((A) > (B) ? (A) : (B))
int main() {
int x = max(20,32);
printf("%d\n", x);
return 0;
}
但是使用宏定义一定要格外注意括号的使用,不然很可能因为优先级问题使得程序出错,例如:
#include <stdio.h>
#define abs(X) (X > 0 ? X : -X)
int main() {
int y = abs(12-23);
printf("%d\n", y);
return 0;
}
正确的写法是:
#include <stdio.h>
#define abs(X) ((X) > 0 ? (X) : -(X))
int main() {
int y = abs(12-23);
printf("%d\n", y);
return 0;
}