在C语言中使用宏定义

2024 年 8 月 9 日 星期五(已编辑)
/ , ,
34
2
摘要
在C语言中,宏定义用于定义常数或简化代码,提高可读性并节约内存。通过宏定义,编译器会自动替换代码中的宏内容,避免了创建全局变量的内存消耗。使用宏时需注意:宏名称遵循标识符规则,定义时结束不加分号。宏只是文本替换,编译后代码将结合宏进行处理。同时,带参数的宏允许更多功能,比如计算两个数字的最大值,也支持嵌套定义。
这篇文章上次修改于 2024 年 8 月 9 日 星期五,可能部分内容已经不适用,如有疑问可询问作者。

在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

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...