#define宏定义
来源:互联网 发布:苹果mac键盘怎么解锁 编辑:程序博客网 时间:2024/06/10 21:30
define宏定义的小例子
#include <stdio.h>#include <iostream>#define SUB(x,y) x - y#define ACCESS_BEFORE(element, offset, value) *SUB(&element, offset) = valueusing namespace std;int main() { int i; int array[10] = {1,2,3,4,5,6,7,8,9,10}; ACCESS_BEFORE(array[5], 4, 6); for(i = 0; i < 10; i++) { cout<<array[i]<<endl; } return 0;}
宏定义被替换成了:*&array[5] - 4 = 6
&array[5]表示array[5]的地址
*&array[5]表示array[5]
相当于array[5] - 4 = 6,由于左边是一个表达式,所以编译会报错
如果想让程序正确的运行,需要将宏定义部分改为:
#define SUB(x,y) (x - y)#define ACCESS_BEFORE(element, offset, value)*SUB(&element, offset) = value
宏定义部分相当于被替换成了:*(&array[5] - 4) = 6
array[5]的地址上向前移动4位,即array[1] = 6
所以程序运行的结果为:
———————————————–
#define 定义min函数
#define MIN(A, B) ((A) <= (B) ? (A) : (B))
注意事项:
1. #define定义的函数会直接嵌入到代码中
2. 三重条件操作符?: 代替if
3. 在宏定义中,用括号把参数小心地括起来
4. 不能以分号结束
阅读全文
0 0
- 宏定义define用法
- 宏定义#define
- Embedded - Define 宏定义
- 使用宏定义DEFINE
- #define宏定义中的#,##,@#,\
- C宏定义#define
- ios #define 宏定义
- 宏定义define
- 宏定义#define
- 宏定义#define整理
- C++宏定义#define
- 常用宏定义 #define
- define宏定义中的#,##
- 058.Define 宏定义
- 宏定义#define
- 关于#define宏定义
- 058.Define 宏定义
- 宏定义-#define用法
- 三大域监听器的使用
- 数据结构之字典树
- 监听三个域对象的属性变更的监听器
- Java多线程(2)生产者消费者问题(一)
- webpack3.0(三)整合react
- #define宏定义
- ServletContextListener监听器,HttpSession监听器,ServletRequestListener监听器的使用
- hdu—1012
- 搭建 JS SDK 环境结构入门举例
- Filter过滤器的使用
- idea导入的jar包找不到的问题
- ASP web.config中配置数据库连接的两种方式
- 数据结构之三分搜索树
- 类似Google Dapper,微服务需要这样的分布式跟踪工具