printf喜欢这种行为?

时间:2012-03-30 15:01:28

标签: c macos

我的功能如下

extern "C" int FuncTrace(const char *fmt, ...)
{
    va_list args;
    va_start(args, fmt);
    return printf(fmt, args);
}

如果我在控制台上打印一些东西,如下所示,它不起作用?

FuncTrace(" %s  \n", __PRETTY_FUNCTION__ );

有人可以帮我纠正FuncTrace()吗?

3 个答案:

答案 0 :(得分:4)

如果要传递va_list伪参数,则需要vprintf函数:

return vprintf(fmt, args);

答案 1 :(得分:2)

您似乎认为printf()接受va_list作为其第一个参数。它没有,它想要一个字符串。您需要使用vprintf()

return vprintf(fmt, args);

答案 2 :(得分:2)

您的意思是在vprintf函数中使用FuncTrace而不是printf吗?