我已经看到代码在每个函数的开头做这样的事情:打印函数名称,以及每个参数名称和值,以帮助记录和调试。我想知道是否有自动化这个。例如,在以下代码中,是否可以使用某些宏或其他工具替换(... "%d, %d", x, y)
?非常感谢。
void foo(int x, int y)
{
trace(__FUNCTION__, "%d, %d", x, y);
...
}
答案 0 :(得分:0)
如果有一些__args__
变量/宏,这可能是可能的。但是,无论您选择哪种规范,C或C ++标准都没有这样的东西。你可以在这里保存一些打字的唯一方法是通过定义像这样的宏(C99 +或C ++ 11 +)来摆脱__FUNCTION__
:
#define TRACE(fmt, ...) trace(__FUNCTION__, fmt, __VA_ARGS__);
不幸的是,没有技巧可以让你获得参数名称和值,而不是逐个地将它们提供给trace
或TRACE
,至少不会在任何现有的C或C ++标准中。有一天C ++可能会有一些反射功能,但你至少要等几年。