1

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

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

1 回答 1

0

如果有一些__args__变量/宏,这可能是可能的。但是,无论您选择哪种规范,C 或 C++ 标准中都没有这样的东西。__FUNCTION__您可以在这里做的唯一一件事是通过定义一个像这样的宏(C99+ 或 C++11+)来摆脱一些输入:

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

不幸的是,没有任何技巧可以让您在不将它们一一提供给traceor的情况下获取参数名称和值TRACE,至少在任何现有的 C 或 C++ 标准中都不会。有一天,C++ 中可能会出现一些反射特性,但你至少还得再等几年。

于 2013-05-28T14:00:13.683 回答