博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NO.2: 尽量以const,enum,inline 替换 #define
阅读量:6262 次
发布时间:2019-06-22

本文共 971 字,大约阅读时间需要 3 分钟。

1.首先#define 定义不重视作用域(scope),虽然可以#undef控制,但是不美观,还存在多次替换的问题,以及没有任何封装性.

2.const XXX_XX,保证其常量性以及可控的作用域,如果是指针类型则 const XXXX* const ptr="hello world",也可以完美替换#defin

3.enum hack 替换数组大小问题,和#define 一样不会导致非必要内存(只有在声明enum类型时有内存)

4.宏函数会产生很多问题,没有对参数的各种限制,而inline可以很好的解决

 

C/C++:

1 #include 
2 3 //Effective C++ NO.2 4 #define CALL_WITH_MAX(a,b) (a>b?a:b); 5 6 template
7 inline int CALLWITHMAX(T a,T b) 8 { 9 return a>b?a:b;10 }11 12 13 14 15 #define STR "Hello Wolrd"16 const char *const str = "Hello Wolrd";17 18 class Test19 {20 public:21 //enum hack22 enum{SIZE=20};23 int Array[SIZE];24 25 //旧版编译器可能需要类外初始化static,不能给数组大小赋值26 static int size;27 };28 29 int Test::size=20;30 31 32 33 34 35 int main(int argc, char **argv)36 {37 int a=2,b=1;38 //inline没有问题39 std::cout<
<

 

注意: 对于纯常量,尽量使用const,或者enum替代

          对于形似函数的宏,尽量使用inline替换

转载于:https://www.cnblogs.com/xuaidongstdudyrecording/p/7257185.html

你可能感兴趣的文章
springboot与redis
查看>>
读《Cassandra权威指南》
查看>>
Xmanager连接linux
查看>>
Android开发教程 --- 数据存储 SQLite
查看>>
北大acm1006
查看>>
大数据环境下的数据质量管理策略
查看>>
vue中使用monaco-editor打包文件混乱的问题
查看>>
下载PhantomJS
查看>>
iOS自定义字体及类目
查看>>
lvs
查看>>
BeautifulSoup学习心得(一)
查看>>
20159208《网络攻防实践》第三周学习总结
查看>>
统计信号处理-简单看看克拉美罗界
查看>>
201621123048《java程序设计》第一周学习总结
查看>>
(转)C#中 特性(attribute)的用法
查看>>
IEnumerable.GetEnumerator Method
查看>>
android上的.9.png图片文件
查看>>
最大连续子序列和的问题
查看>>
【转】程序员中"5%神话";刘未鹏:为什么你应该写博客
查看>>
Ubuntu新装系统要装软件
查看>>