问题描述
如何始终打印调用 printf()
的函数名称,而无需每次都提供信息?
解决方法
您可以使用可变参数宏:
#define printff(a,...) printf("%s(): " a,__func__,##__VA_ARGS__)
这个宏使用传递给 printf 的字符串 a
并在它前面加上 "%s(): "
,它将保存函数名称。函数名称 __func__
是第一个提供的变量,它将始终用于第一个提供的 %s
。 ##
之前的 __VA_ARGS__
处理对空 ...
的调用。
此宏可扩展为包含文件名 __FILE__
或行号 __LINE__
。
这应该适用于 C99 及更高版本。