可变参数不打印

Variable arguments is not printing

#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.为什么输出屏幕是空白的?

你只打印到 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);
}