宏定义

宏定义:

1.数值宏常量:

宏定义可以出现在代码的任何地方。从本行宏定义开始,之后的代码就都认识这个宏了,而且也可以把任何东西定义成宏。

#define PI 3.141592654

在之后的代码可以直接使用PI来代替这一串数字,而且最好这么做,要不然当代码中有多个这串数字,而我现在要更改它的精度,这可就太麻烦了。所以只需要在宏定义中直接修改它的值就行。

#define ERROR_POWEROFF -1

还有-1这个魔鬼数,一般系统开发会定义好多错误码,如果没有定义的话,这怎么会知道-1代表的是什么。

2.字符串宏常量:

#define ENG_PATH_1 E:\English\listen_to_this\listen_to_this_3

很明显的可以看出,宏还可以来定义字符串,这样可以避免一些错误。

如果定义的字符串太长一行放不下的话可以折行,用符号“\”,但是一定要注意千万不要在折行符号后加任何字符(包括空格)。

#define ENG_PATH_3 E:\English\listen_to_this\listen\
_to_this_3

宏定义注释符号

#define BSC //
#define BMC /*
#define EMC */
BSC my single-line comment
BMC my multi-line comment EMC

注释先于预处理指令被处理,当这两行被展开成//…或/*…*/时,注释已处理完毕,此时再出现//…或/*…*/自然错误.因此,试图用宏开始或结束一段注释是不行的。

宏定义表达式

#define SQR (x) x * x

对不对?试试:假设x 的值为10,SQR (x)被替换后变成10*10。没有问题。
再试试:假设x 的值是个表达式10+1,SQR (x)被替换后变成10+1*10+1。问题来了,
这并不是我想要得到的。怎么办?括号括起来不就完了?
#define SQR (x) ((x)*(x)),所以,在宏定义表达式的时候千万别吝啬括号,稍有不慎就会出错。

#undef

#undef是用来撤销宏定义的

#define X 3
#define Y X*2
#undef X
#define X 2
int z=Y;

此时 z = 4; 在#undef之后,X的代码就不能使用了,它已经撤销了宏定义。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值