如何自动派生类型和值的函数参数?

时间:2013-05-27 19:22:18

标签: gcc g++

我已经看到代码在每个函数的开头做这样的事情:打印函数名称,以及每个参数名称和值,以帮助记录和调试。我想知道是否有自动化这个。例如,在以下代码中,是否可以使用某些宏或其他工具替换(... "%d, %d", x, y)?非常感谢。

void foo(int x, int y)
{
    trace(__FUNCTION__, "%d, %d", x, y);
    ...
}

1 个答案:

答案 0 :(得分:0)

如果有一些__args__变量/宏,这可能是可能的。但是,无论您选择哪种规范,C或C ++标准都没有这样的东西。你可以在这里保存一些打字的唯一方法是通过定义像这样的宏(C99 +或C ++ 11 +)来摆脱__FUNCTION__

#define TRACE(fmt, ...) trace(__FUNCTION__, fmt, __VA_ARGS__);

不幸的是,没有技巧可以让你获得参数名称和值,而不是逐个地将它们提供给traceTRACE,至少不会在任何现有的C或C ++标准中。有一天C ++可能会有一些反射功能,但你至少要等几年。