宏 —— C/C++ 黑魔法
来源:互联网 发布:linux 重命名命令 编辑:程序博客网 时间:2024/05/16 08:53
宏的应用场景主要在:多次出现的代码逻辑;
一个数的平方:
#define SQUARE(a) ((a)*(a))
#define
宏做的是原样替换,不做安全检查,哪怕宏中涉及的某变量暂时未被声明,宏只在调用端执行安全检查;
1. 常量的宏定义
常量的宏定义,和枚举一样,最直接的目的在于通过重命名为变量赋予实际意义,提高代码的可读性。
#define PI 3.141592653589793#define VK_ESCAPE 0x1B
显然 PI 要比 3.141592653589793 更为直接,VK_ESCAPE 要比一个 0x1B(或者27)更有意义。
当然关于 VK_ESCAPE 更为审慎的写法是:
#if !defined VK_ESCAPE#define VK_ESCAPE 0x1B#endif
2. 编写简洁的代码
将函数中反复出现的一部分代码定义为 C/C++ 宏;
如,判断无序整数数组中有无重复元素:
bool hasDuplicate(const vector<int>& array){ for (int i = 0; i < array.size(); ++i) for (int j = 0; j < i; ++j) if (array[i] == array[j]) return true; return false;}
利用宏定义可将代码改写为:
#define FOR(i, n) for (int i = 0; i < n; ++i)bool hasDuplicate(const vector<int>& array){ FOR (i, vec.size()) FOR (j, i) if (array[i] == array[j]) return true; return false;}
0 0
- 宏 —— C/C++ 黑魔法
- c/c++ 之宏的黑魔法
- C 语言黑魔法连接
- Objective C block背后的黑魔法
- objective-c中实现函数重载(黑魔法:__attribute__((overloadable)))
- objective-c中实现函数重载(黑魔法:__attribute__((overloadable)))
- C++——include<黑科技>
- C++——黑白棋(向左)
- C++——黑白棋(右上)
- C++——黑白棋(落子)
- C++——黑白棋(final)
- C++——又是黑白棋
- 宏定义的黑魔法
- 宏定义的黑魔法
- Swift与Objective-C的兼容“黑魔法”:@objc和Dynamic
- Objective-C runtime黑魔法,交换iOS系统类库方法
- Swift与Objective-C的兼容“黑魔法”:@objc和Dynamic
- #define 宏定义的黑魔法
- [经典密码]--caesar(python版本)
- Android中无法访问本地Apache服务器原因
- 能量采集 [Bzoj 2005,Noi2010]
- Markdown 图片助手 v0.1
- 2016年团体程序设计天梯赛-初赛 - 重要的话说三遍 - Java
- 宏 —— C/C++ 黑魔法
- 程序设计实习2016推荐练习题 Tour(dp/记忆化搜索)
- git中status指令总是提示内容被修改的解决
- 2016年团体程序设计天梯赛-初赛 - 奇偶分家 - Java
- Activity的四种启动模式
- 29款 业务规则引擎开源软件
- 智慧城市顶层设计范例:以数字家庭区块为例-P01
- 伟哥大数据入门教程一
- PCA(Principal Component Analysis)主成分分析