请教一个宏的写法

ouyh12345 2007-07-19 05:04:15
我有一个写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
改怎么写?
谢谢了。
...全文
204 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
im2web 2008-08-01
  • 打赏
  • 举报
回复
cu里面看到你了,

更好的做法已经有了

#dfine printf ( printf( "%s : %d ", __FILE__ , __LINE__ ), printf)
zgp_lve 2008-07-16
  • 打赏
  • 举报
回复
mark
hell_wolf 2008-03-23
  • 打赏
  • 举报
回复
用do,while有什么好处?
ouyh12345 2007-07-19
  • 打赏
  • 举报
回复
谢谢了,我的vs2005编译器能支持__VAR_ARGS__
我试试,看结果是不是正确。
jixingzhong 2007-07-19
  • 打赏
  • 举报
回复
__VAR_ARGS__

mLee79() 动作真快啊
hanb99 2007-07-19
  • 打赏
  • 举报
回复
mark
mLee79 2007-07-19
  • 打赏
  • 举报
回复
如果支持 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;
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧