首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于#if的有关问题,请高手看一上

2012-09-23 
关于#if的问题,请高手看一下在书上看到了这么一句,#if DBGKdPrint(a)DbgPrint##a#elseKdPrint(a)#endif说

关于#if的问题,请高手看一下
在书上看到了这么一句,
#if DBG
  KdPrint(a) DbgPrint##a
#else
  KdPrint(a)
#endif
说是有DbgPrint()这么个函数,然后为了只在调试版本输出,可以这样定义个宏,小弟不明白其中的机理,请高手给小弟指点迷津。

[解决办法]
#define DBG 1
就可以输出调试信息了
[解决办法]
##是连接符
应该是KdPrint(a) DbgPrint##a()这样吧?不然不是个函数

如果你这么调用KdPrint(1) 并且#define DBG 1
相当于调用DbgPrint1()
[解决办法]
#if DBG
定义KdPrint(a)为DbgPrint##a
#else
定义KdPrint(a)为空
#endif

这样当DBG定以后,在编译期间KdPrint(a)未被替换成DbgPrint##a再编译;如果没有定义DBG,则编译器会过滤掉KdPrint(a),不将其生成二进制文件,于是就不会执行。

热点排行