Переменные аргументы не печатаются - PullRequest
0 голосов
/ 25 июня 2018
#define TRACE2(args)   TraceDebug args;

void TraceDebug ( const char * format, ... );

void TraceDebug ( const char * format, ... )
{
  static char buffer[256];
  va_list args;
  va_start (args, format);
  vsprintf (buffer,format, args);
  va_end (args);
}


int main(void)
{
    TRACE2(("ece %d is of %d students.", 1,33));
    return 0;    
}

Ожидаемый вывод ece 1 is of 33 students. Почему экран вывода пуст?

1 Ответ

0 голосов
/ 25 июня 2018

Вы печатаете только в buffer, но ничего не печатаете на экране.

Это то, что вам нужно:

void TraceDebug ( const char * format, ... )
{
  static char buffer[256];
  va_list args;
  va_start (args, format);
  vsprintf (buffer,format, args);
  va_end (args);
  printf("%s", buffer);  // <<< add this
}

Или просто используйте vprintf, если вы хотите выводить только на экран.

void TraceDebug(const char * format, ...)
{
  va_list args;
  va_start(args, format);
  vprintf(format, args);  // <<<<<<<<<<<
  va_end(args);
}
...