我总是写下面的
代码用于调试目的:
printf("%s:%d this is a string %s int %d",__FUNCTION__,__LINE__,strval,intval);
现在因为总是使用第一部分(FUNCTION,LINE),所以我希望创建一个宏来执行它并且只是附加其他调试字符串.@H_403_5@
也许看起来像:@H_403_5@
#define MYPRINT(args...) printf("%s:%d",__LINE__);printf(##args)
但我希望使用一个声明而不是上面的两个声明!可能吗?@H_403_5@
澄清不重复this one@H_403_5@
这是不同的,因为我希望在print命令中添加一些新字段.实际上这里的答案很棒,感谢所有人的帮助!@H_403_5@
如果你想单独
调用printf(),你的MYPRINT需要知道格式字符串.你可以尝试这样的东西,只要格式字符串是
文字:
#define MYPRINT(FMT,...) printf("%s:%d " FMT,##__VA_ARGS__)
##是一个GCC(可能是其他)编译器扩展,在__VA_ARGS__实际为空的情况下吞下逗号.如果您的编译器不支持它,请将其关闭.@H_403_5@