请帮助我为一个支持VARIADIC的编译器和另一个不支持VARIADIC的编译器编写一个printf宏。

例如:

#ifdef HAVE__VA_ARGS
printf macro

#else
printf macro

最佳答案

使用VARIADIC的解决方案可以像这样被锁定。

#define my_printf(_format, ...) { \
        printf(_format, __VA_ARGS__); \
    }


而且,如果您确实有一个不带VARIADIC的编译器,则必须实现一个带有变量参数列表的函数。

#include <stdarg.h>
#include <std.h>
int my_printf(const char *format, ...)
{
  va_list ap;
  va_start(ap, dst);
  return vprintf(format, ap);
}

09-29 20:59