在C语言中使用宏定义
define()
在c语言中我们可以使用宏定义,来定义一些常数,或者用于简化代码,通过宏定义不仅提高了代码的可读性,也在一定程度上节约了内存开销,比如,我们保存一个常量可能会使用全局变量的方式,但是这无疑会消耗内存,但是通过宏定义的方式,通过宏定义,编译器会自动将宏定义所定义的内容替换源代码中,然后再进行编译,这种方式不仅达到了使用全局变量声明的常数的效果,而且不会真正的创建一个变量,此外,可以使用宏来简化一些代码。
通过宏定义一个常量
宏的名称个标识符的规则一致。
#define MAX 100
特别注意使用
#define
定义宏的时候结束不会加;
。使用宏
printf("%d",MAX); // 100
//等价于
printf("%d",100);
特别注意宏定义只是进行文本的替换,也就是对代码中使用了宏定义的位置进行文本的替换。 例如:
#define NUM 10+10
printf("%d",NUM*10); // 110
可以理解会通过编译器的处理后,代码会先变成如下这样。
printf("%d",10+10*10);
自然一下子就知道结果为110
,但是显然和我们的语气不符,由此我们修改宏定义。
#define NUM (10+10)
这样就对了。
带参数的宏
通过使用带参数的宏,我们可以实现更多有意思的尝试,比如我们可以实现一个求两个数字求最大值。
#define MAX_2(a,b) a>b?a:b
printf("%d",MAX_2(12,123)); // 123
printf("%d",MAX_2(1232,1)); // 1232
在定义宏定义的时候是支持嵌套定义的,也就是说。
#define MAX_2(a,b) a>b?a:b
#define MAX_3(a,b,c) (MAX_2(a,b))>(MAX_2(b,c))?(MAX(a,b)):(MAX(b,c))
printf("%d",MAX_3(123,12,2332)); // 2332