无参宏定义

Posted LC编程开发者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无参宏定义相关的知识,希望对你有一定的参考价值。

在介绍常量符号的时候,我们定义一个常量符号的格式如下:

#define 常量符号 常量值

       此时,可以把“常量符号”称为:;那么常量符号的定义称为:宏定义。其中,常量值可以是字符串、表达式、常数值等等。

       注意:定义宏的时候,在行的末尾,不需要使用分号“;”结束。如果添加了分号,那么,分号就作为常量值的一部分,在预处理的时候,分号作为常量值的一部分一起替换宏名。

       那么,编译器在预处理的过程中,把代码中所有出现常量符号的地方,都使用其对应的常量值替换。例如:

#define MAX 1000

       此时,定义常量符号MAX,它代表1000这个数值。那么,有如下的代码:

int a = MAX + 99;

       那么,在编译预处理的时候,就把MAX这个符号常量替换为1000数值。所以,代码就转换为:

int a = 1000 + 99;

       在代码中,使用宏定义有一定的好处,如下:

  1. 给常量命名,能够直观地表达该常量值的作用。例如,我们要定义一组数据的最大值,可以定义:

#define MAX_VALUE 1000

此时,MAX_VALUE符号常量就表示一组数据的最大值。从名称来看,就是一个最大值的定义。

(2) 可以批量修改某个常量值。假如在代码中有300处地方使用了MAX_VALUE这个符号常量,某一天,系统需求有改动,数据的最大值变为500,那么,不用修改300处引用最大值的地方,只需要修改MAX_VALUE的定义就可以了。

       所以,合理地使用宏定义,可以提高代码的扩展性和移植性。如下是一个程序测试例子:

       程序运行结果如下:

       可以看到,我们定义了STR_LEN、STR、EXP这样的宏。在代码进行编译预处理的时候,就把代码中,使用宏的地方,替换为宏定义的值。例如:

num = EXP + 3;

       这样的语句就使用 EXP宏的值进行替换,最终得到的代码是:

num = (1 + 2 + 3) + 3;   //最终计算出 num 为9数值

       所以,宏定义就是一个替换的操作。

韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

以上是关于无参宏定义的主要内容,如果未能解决你的问题,请参考以下文章

第八章 编译预处理

ztree怎么设置点击节点展开

C语言开发必会 宏定义宏函数

预处理

函数与宏定义

第六章 函数和宏定义