#,##等宏定义
__FILE__ 源文件的名称
__LINE__ 代码在源文件中是第几行
__DATE__ 源文件完成日期
__TIME__ 源文件完成时间
__TIMESTAMP__ 源文件完成日期时间
# 字符串 <==>"字符串"
__FILE__ 源文件的名称
__LINE__ 代码在源文件中是第几行
__DATE__ 源文件完成日期
__TIME__ 源文件完成时间
__TIMESTAMP__ 源文件完成日期时间
# 字符串 <==>"字符串"
## 连接参数
#include <stdio.h>
#define _STRING(x) #x
#define STRING(x) _STRING(x)
#define paster( n ) printf( "token"#n" = %d\n", token##n )
int token9 = 100;
using namespace std;
int main(int argc, char **argv)
{
char* pChar = STRING(__FILE__);
printf("pChar is:%s\r\nCompiled at:%s\r\n",pChar,__TIMESTAMP__);
printf("Test Macro ##: paster(9) is equal to:\r\n");
paster(9);
return 0;
}
第六句中:对printf(9)展开,token"#n" <=>token""9"",在c语言中两个相连的双引号会自动忽略<=>token9
而token##9则<=>toekn9
so,reout is:
| pChar is:"/home/elitor/workspace/Test/TestMacro/main.cpp" Compiled at:Tue Apr 24 15:36:58 2012 Test Macro ##: paster(9) is equal to: token9 = 100 |
本文通过实例演示了C语言中宏定义的使用方法,包括如何利用宏定义来获取源文件名、行号及编译时间等信息,并展示了如何将宏与预处理器结合使用来创建动态的打印输出。
1万+

被折叠的 条评论
为什么被折叠?



