2012-03-30 2 views
4

У меня есть функция, как показано нижеprintf нравится поведение?

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

Если напечатать некоторые вещи на консоли, как показано ниже, это не работает?

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

Может кто-нибудь помочь мне исправить FuncTrace()?

+0

Приложите к следующему сообщению сообщение об ошибке: –

+0

Ошибка была выполнена. – MacGeek

+0

Действительно? Даже с '-Wall'? –

ответ

4

Вам нужна функция vprintf, если вы хотите передать в va_list псевдо-аргумент:

return vprintf(fmt, args); 
2

Вы, кажется, думаете, что printf() принимает va_list в качестве своего первого аргумента. Это не так, он хочет строку. Вы должны использовать vprintf():

return vprintf(fmt, args); 
2

Вы имеете в виду использовать vprintf в вашей FuncTrace функции вместо printf ?

Смежные вопросы