C/C++补充:#define的作用

1. #define 宏定义命令

  C语言或C++语言源程序中允许使用一个标识符来表示一串字符串,而#define就是用于实现该功能的命令

2. 实现方式

#define 标识符 字符串

字符串可以为常数,表达式,格式串等

#define ikun 小雨

 其中,标识符被称为宏名,而字符串被称为宏

此命令一般用于源程序开头,是一条预处理命令。凡是以“#”开头的均为预处理命令

在写下该条命令后,在程序进行编译预处理时,预处理程序会将程序中所有出现的“宏名”都使用“宏”来替换,这个过程叫做“宏展开”或者“宏代换”,宏代换是由预处理程序自动完成的。

3. 宏的分类

在C语言或C++语言中,“宏”一般分为有参数和无参数两种

3.1 无参数宏

无参数宏即宏定义命令中的宏名不带参数

#define ikun 小雨

 类似于上面这种即无参数宏

3.2有参数宏

有参数宏即宏名中加入了参数作为宏名

此时,在宏定义时宏名所带的参数被称为形式参数,在调用名宏名所带的参数被称为实际参数

在预处理程序处理宏代换命令时,不仅要将宏名替换为宏,还要将宏中所带的形式参数替换为实际参数

#define ikun(n) 6*n

 如上,我们在定义ikun宏名时加入了形式参数n,在宏名中也有相应的形式参数n

int ikun1 = 6;
int ikun2 = 0;
ikun3 = ikun(6);
ikun2 = ikun1*ikun3;
printf("%d",ikun2);

如上,ikun3调用了ikun(n)这个宏,其中6被称为实际参数,在调用时,6n其中n被替换成6

4. 注意事项

4.1 宏代换的简单性

宏定义命令只是简单的将一串字符串用一个标识符来表示,在宏展开时,预处理程序将标识符替换为字符串,其中,字符串可以包含任何字符,可以是常数,也可以是表达式,但预处理程序不对它进行任何检查,如有错误,只能在宏展示以后的源程序中查看。

4.2 宏定义不是说明或者语句,它属于命令类,不必在句末加上分号,如加上分号,预处理程序会将分号也视为宏的一部分

4.3 宏定义必须写在函数之外,其作用域是宏定义命令起到源程序结束,如要终止其定义可以使用#undef命令

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值