尽量使用 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++

你可能感兴趣的:(C/C++,学习路线)