预处理命令

预处理命令

1.0 宏定义

1.1不带参数的宏定义

不带参数的宏定义就是用一个指定的标识符来代表一个字符串。其一般形式为:#define 标识符 字符串 其中#表示这是一条预处理命令,define为宏定义命令;“标识符”就是宏名;“字符串”可以是常熟,表达式,格式字符串等。例:#define PI 3.1415926 “它的作用是用指定标识符代替常量3.1415926”。我们把在预处理时将宏名替换成字符串的过程称为“宏展开”。

1.1.1注意事项

(1)为了与变量相区别,宏名习惯上用大写字母表示,但也允许使用小写字母。

(2)宏定义只是用宏名代替一个字符串,也就是只作简单的替换,不做正确性检查。

(3)宏定义必须写在函数之外,默认其作用域为宏定义命令起到源程序结束。

(4)宏定义允许嵌套,在定义的的字符串中可以使用已经定义的宏名。在宏展开时,由预处理程序层层代换。

(5)宏定义与变量定义的含义不同,宏定义不分配内存,变量定义分配内存。千万不要把宏名当作变量名使用。

1…1.2参考代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jgBbKCjf-1605426530815)(C:\Users\houpengyang\AppData\Roaming\Typora\typora-user-images\image-20201111152952944.png)]

1.2带参数的宏定义

带参数的宏定义一般形式为:#define 宏名(参数表) 字符串

在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。带参数的宏定义不是进行简单的字符串替换,还要进行参数替换,即用实参去替换形参。带参宏调用的一般形式为:宏名(实参表);

参考代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKy3NJ5B-1605426530819)(C:\Users\houpengyang\AppData\Roaming\Typora\typora-user-images\image-20201111155244251.png)]

撤销宏定义命令

#undef 标识符 //由于程序中撤销了宏定义,因此,PI只在main函数中有效,在后面的其他函数中无效,当其他函数中输出PI的值时系统提示错误。若无“#undef PI”,则PI在main函数、function函数中都有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值