读书人

请问一个宏的写法

发布时间: 2012-03-09 16:54:57 作者: rapoo

请教一个宏的写法
我有一个写log的函数
LogError(char *msg,...);
现在,想在写log时,在这语句里插入__FILE__和__LINE__,但不修改msg的格式。
举个例子,
LogError( "Cxxx::Fun : par1:%d, par2:%d ", par1, par2);
它将在log里写入Cxxx::Fun : par1:1, par2:2之类的。
现在我想用同样的语句,在log里写入:
D:\xxx\yyy.cpp,128,Cxxx::Fun : par1:1, par2:2
改怎么写?
谢谢了。


[解决办法]
如果支持 C99 就用下面的, 不支持就只有用上面的, 不过在一些情况下改变了程序的语义 ...

#include <stdio.h>

#if 0
#define printf printf( "%s : %d ", __FILE__ , __LINE__ ); printf
#else
#define printf( __VAR_ARGS__ ) do { printf( "%s : %d ", __FILE__ , __LINE__ ); printf( __VAR_ARGS__ ); } while(0)
#endif

int main()
{
printf( "tnngx\n " );
return 0;
}

[解决办法]
__VAR_ARGS__

mLee79() 动作真快啊

读书人网 >C语言

热点推荐