尽量使用 inline enum const 代替#define

点击链接学习C++ 优化技巧 :Effective C++


使用#define 定义常量和内联函数,是 C 语言的风格,但宏定义的滥用会给调试带来不必要的麻烦, 而 C++ 提供了许多关键字来满足这些需求,我们一定要利用好它。

要清楚的认识这一点,就需要清楚地理解 #define。在程序编译的过程中讲到,#define 被称为预处理器,所有宏定义在编译前都会被替换,一旦出现编译错误不会有任何关于宏的提示,给调试带来很大不便。因此,尽可能使用 const enum 等关键字代替 #define

关注以下两点:

  • 对于单纯常量,最好以const 或者 enums 替换 #define
  • 对于形似函数的宏,最好改用 inline 函数替换 #define

此外,C++11 提供了新的关键字 constexpr,建议尽可能用 constexpr 代替 #define,这里简要介绍一下 constexpr 与 const 的区别:

  • constexpr 声明常量,该常量的值必须在编译期已知,编译器可以尽情优化
  • const 声明只读量,可以在编译期确定也可以在运行期确定

点击链接学习C++ 优化技巧 :Effective C++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值