条款02:尽量以const,enum,inline替换 #define

博客阐述了“宁可以编译器替换预处理器”的观点。指出宏定义名字编译器看不到、不注重作用域,宏定义函数存在缺陷等问题。还提及class常量、enum的作用。总结建议用const对象、enums替换单纯常量的#define,用inline函数替换形似函数的宏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“宁可以编译器替换预处理器”:

 

一、宏定义的名字被编译器看不到:

 

 

二、关于class常量

 

 

 

三、宏不注重作用域

 

 

四、the enum hack

 

 

所以,如果我们如果不想别人获得一个指针或引用指向你的某个整数常量,enum可以帮助你约束。

 

 

 

五、宏定义max函数的缺陷

          宏只是单纯的替换

 

 

 

 

 

总结:

1、对于单纯常量,最好以const对象或 enums替换#defines。
2、对于形似函数的宏( macros),最好改用inline函数替换#defines。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值