define宏使用方法总结

1.普通用法(简单的文本替换)

例如:

#define N 10
#define PI 3.14

2.结合运算符实现简单功能

例如:

①  计算数组元素个数

#define ARR_SIZE(n) sizeof(n)/sizeof(n[0])

②获得两个数中最大的那个

#define MAX(a,b) ((a) > (b) ? (a) : (b))

注:一定考虑到运算符优先级带来的影响,所以一般每个变量都加上"()"。

例如:

#define DOUBLE(x) x+x
i=5*DOUBLE(5);

最终不是我们想要得到的求和结果!

3.使用宏给某些变量进行初始化

例如:

①给一个数组进行初始化(固态法)

#define INIT {1,2,3,4}

int arr[]=INIT;

②给结构体进行初始化(动态法)

typedef struct{
    int a;
    int b;
    int c;
}A;

#define INIT1(X,Y,Z) {X,Y,Z}
#define INIT2(X,Z) {.a=X, .C=Z}

A s1=INIT(1,2,3);    //A s1={1,2,3}
A s2=INIT(4,6);      //A s2={.a=4, .c=6}

4.编写宏函数

注:编写宏函数建议结合do {}while(0);语句,将其变成一个整体

补充,使用do{}while(0);语句编写函数的好处(个人见解):

①分号问题:每条语句后面都要加分号

②用于条件语句时,逻辑错误(变成了只有第一句有效)

猜你喜欢

转载自blog.csdn.net/isco22/article/details/89604336
今日推荐