对宏的使用的理解
来源:互联网 发布:c语言杨辉三角形算法 编辑:程序博客网 时间:2024/05/22 06:23
#define name(parameter-list) stuff
注意:参数列表的左括号必须与name相邻。如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。
对于#define 替换也有很多诡异的地方,有的时候会让人很费解。
解析步骤:
1.
2.
3.
宏参数和#define 定义可以包含其他#define 定义的符号。但是,宏不可以出现递归。
可以举一个例子便可明白:
- #define f(a,b) a##b
- #define g(a) #a
- #define h(a) g(a)
- h(f(1,2))
- g(f(1,2))
写出4,5的替换过程:
5: g(f(1,2)) ---> #f(1,2)这样写是不合法的,其实是直接成了字符串常量了 f(1,2),结束
4 :h(f(1,2)) ----> g(f(1,2))------>替换f(1,2)得g(12)------>#12==12
特别要注意4,这种替换的顺序。顺序扫描之后,再返回来顺序扫描找#define定义的符号,如此循环作替换过程。
- 对宏的使用的理解
- 对const使用的理解
- 对const使用的理解
- [ZT] 对const使用的理解
- 对php中函数使用的理解
- 完全新手对delegate使用的理解
- 对CSocket类使用的理解
- 对IO的初步理解与使用
- 对OC中NSData使用的理解
- 对OC中NSData使用的理解
- 菜鸟对使用AIDL的一点理解
- 对require使用的一点理解
- 对关键字的理解和使用
- 对MVVM的理解及如何使用
- 对mini2440存储器的理解和使用
- 对Cookie机制和使用的理解
- 对多数服务器使用Linux的理解
- 对控件ListView的理解与使用
- 使用SSH证书登陆远程服务器
- JSP常见问题
- java volatile
- 学习内存管理实例的感想
- ADO.NET
- 对宏的使用的理解
- 利用/proc/scsi/usb-storage来判断 U盘的移入/移出
- 对递归函数的一点小理解
- 极品C/C++内存资源垃圾回收库注释源码
- c++抓取url库
- 转 : authority object,luw,data cluster,bapi等
- Linux驱动开发学习--字符设备驱动结构
- 2010年北京理工大学中国象棋棋软比赛的冠军引擎"新旋风三代"升级到Tornado v1.0.4.0, 加密采用Safengine Licensor v1.8.4
- 在Powershell中调用VBScript