define如何对带参数宏定义
解释一下如下代码
#define __TEXT(quote) quote
參考答案:define如何对带参数宏定义
解释一下如下代码
#define __TEXT(quote) quote
回答如下:
#define __TEXT(quote) quote : 定义带参数宏__TEXT 为他的参数
程序中遇到__TEXT(参数) 用他的 参数 直接代替 。
例如:
printf(__TEXT("this is test!"));
结果和 printf("this is test!"); 是一样的
在VC++6.0中 定义了 __T(x) 和 _T(x) 与 __TEXT(quote) quote 是一样的
例如:CFileDialog OpenDlg(TRUE,_T("All File"),
_T("*.*"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
(_T("All File(*.*)|*.*")));
对于带参宏定义:形式上类似函数,编译时直接镶嵌到调用该代码的地方
例如我要检测变量的某一位可以定义成宏定义函数形式
#define BITN(var,n) (var&(1<<n))
当我使用时可以直接调用:
int var=0x45;
if(BITN(var,2)) printf(__TEXT("bit3=1"));
等于if((var&(1<<2)))printf("bit3=1");
又如:当条件满足时输出本文件名和该函数的调用行号
#define AssertFileLineE(expression) {\
if(!(expression)) \
printf("filename:%s,line number:%d",__FILE__,__LINE__);\
}
调用形式:
假设文件为:test.c
行号为后面的注释所示
#include“stdio.h” //0行
#include“stdlib.h” //1行
main() //2行
{ //3行
//4行
AssertFileLineE(rand(100%2)==0);//5行,当随机数为偶数时输出main函数所在的文件名和该行的行号,输出结果为:filename:test.c
,line number:5
}