本文介绍: 1. 预处理器只进行简单的替换,变量名称不会被记录符号表,同时可能导致编译的目标文件包含常量的多份拷贝;2. 定义字符串的采用string替换char*,避免写两次const的情况出现;3. #define没有作用域,不能将常量的作用域限制在class内;5. enum 和 #define定义的对象不会导致非必要的内存分配;4. 如果上述类中,编译器不允许在类中设定初值,可以改用枚举值替代;6. 形似函数的宏,最好用inline函数替换。
Item01 视C++为一个语言联邦
C++由四个次语言组成:
Item02 尽量以const,enum,inline替换#define
目标是让编译器来替代预处理器,使用预处理器会存在以下问题:
1. 预处理器只进行简单的替换,变量名称不会被记录符号表,同时可能导致编译的目标文件包含常量的多份拷贝;
2. 定义字符串的采用string替换char*,避免写两次const的情况出现;
3. #define没有作用域,不能将常量的作用域限制在class内;
4. 如果上述类中,编译器不允许在类中设定初值,可以改用枚举值替代;
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。