#define 宏的用法
来源:互联网 发布:香薰睡眠知乎 编辑:程序博客网 时间:2024/05/16 03:21
1. 格式:
#define identifier string
在源程序中,遇到标识符identifier,用string来代替。
2. 注意事项:
a) identifier标识符不能有空格,identifier空格之后遇到的第一个字符开始就是string的内容,并且string的内容只能是一行
b) string的内容多行如何写:如果string的内容要写成多行,就要使用续行符/,续行符号/后面不能在有新的字符、空格等,只能是回车换行。
例: 续行符/ 后面不能有其他的字符
#define TEST_MACRO(a,b) a /
+ b
3. 转载一些常用的用途
条件编译、预编译等
debug版本中的调试信息宏定义:
方法一:
#ifdef DEBUG
#define DbgPrintf printf
#else
#define DbgPrintf //
/DbgPrintf
#endif
如果DEBUG已经定义了,那么不用说,当然是用printf去代替DbgPrintf了。
下面只分析DEBUG未定义的情形,这个宏定义实际上是将“DbgPrintf”定义成了“//DbgPrintf”,由于续行符的作用,#define定义时不会发现注释符“//”,但是在展开到代码之后,就成了注释符“//”了,也就是说,如果你原来的代码是DbgPrintf("%d",x);,经过这个宏展开后成了//DbgPrintf("%d",x);,相当于自动在前面加了注释符“//”。要注意的是,续行符后面的“/”一定要顶格写,否则就不是“//”了。另外,这个宏只能单独一行使用,因为它将该行后面的代码都注释掉了。
主要是因为有些编译器它不支持不定长参数宏定义,而printf函数刚好又是一个不定长参数的,所以定义为空宏的办法不好搞,才想出了这个一个把宏变成“//”注释的办法。另外还可以使用
#define DbgPrintf printf
#else
#define DbgPrintf //
/DbgPrintf
#endif
如果DEBUG已经定义了,那么不用说,当然是用printf去代替DbgPrintf了。
下面只分析DEBUG未定义的情形,这个宏定义实际上是将“DbgPrintf”定义成了“//DbgPrintf”,由于续行符的作用,#define定义时不会发现注释符“//”,但是在展开到代码之后,就成了注释符“//”了,也就是说,如果你原来的代码是DbgPrintf("%d",x);,经过这个宏展开后成了//DbgPrintf("%d",x);,相当于自动在前面加了注释符“//”。要注意的是,续行符后面的“/”一定要顶格写,否则就不是“//”了。另外,这个宏只能单独一行使用,因为它将该行后面的代码都注释掉了。
主要是因为有些编译器它不支持不定长参数宏定义,而printf函数刚好又是一个不定长参数的,所以定义为空宏的办法不好搞,才想出了这个一个把宏变成“//”注释的办法。另外还可以使用
方法二:
//#define DEBUG
#ifdef DEBUG
#define DBG(CODE) CODE
#else
#define DBG(CODE)
#endif
就是写代码的时候,对于调试信息加上DBG,稍微麻烦点,例如
DBG(printf("%d",x);)
这样就不会出什么问题了,而且还可以在里面写很多行代码。
方法三:
#ifdef DEBUG
#define Dbgprintf printf
#else
#define Dbgprintf 0 // 当然也可以用 #define Dbgprintf {}
#endif
#define Dbgprintf printf
#else
#define Dbgprintf 0 // 当然也可以用 #define Dbgprintf {}
#endif
粘连(##):将两个符号连接为一个。
例如, #define NEW_VAR(x, y) (x##y)
使用:NEW_VAR(QObject, Private) 宏展开之后成为:QObjectPrivate
粘连的一方不一定必须是宏参数,上面的例子我们也可以改成:
#define NEW_VAR(x) x##Private
使用:NEW_VAR(QObject) 宏展开之后成为:QObjectPrivate
- #define 宏的用法
- define宏的用法
- 宏 #define 的用法
- #define宏的特殊用法
- 宏定义#define的用法
- #define定义宏的用法
- #define定义宏的用法
- #define 宏的用法备注
- #define的用法(宏)
- #define宏中#的用法
- [define的用法]define用法集锦
- 宏(Macro, define)的一个有趣用法
- define(宏)中#和##的用法
- C语言中宏#define的用法
- C宏#define的一些用法
- 宏定义(define)中'#'与'##'的用法
- #define 的注意用法
- #define 的另类用法
- 一个flex正则表达式的demo
- 对顺序搜索算法的测试
- 银行家算法
- Mac OS X (Snow Leopard) and SVN (1.6.2)
- vs2008 断点进不去的问题解决
- #define 宏的用法
- hadoop入门
- GDI+ 内存不足
- ∨ HTML特殊字符
- 华为路由器交换机常用配置命令
- 求delphi 做marc数据
- 某人的JS笔记
- 不要用你的标准来衡量别人的生活
- 开发游戏里做的一个背包数据分页,有不足处请指出