C 编译器的printf宏,支持或不支持变量

C 编译器的printf宏,支持或不支持变量,c,variadic-functions,C,Variadic Functions,请帮助我为一个支持变量的编译器和另一个不支持变量的编译器编写printf宏 例如: #ifdef HAVE__VA_ARGS printf macro #else printf macro 一个可变的解决方案可以像这样锁定 #define my_printf(_format, ...) { \ printf(_format, __VA_ARGS__); \ } 如果你真的有一个没有变量的编译器,那么你必须实现一个带有变量参数列表的函数 #include

请帮助我为一个支持变量的编译器和另一个不支持变量的编译器编写
printf

例如:

#ifdef HAVE__VA_ARGS  
printf macro 

#else  
printf macro 
一个可变的解决方案可以像这样锁定

#define my_printf(_format, ...) { \
        printf(_format, __VA_ARGS__); \
    }
如果你真的有一个没有变量的编译器,那么你必须实现一个带有变量参数列表的函数

#include <stdarg.h>
#include <std.h>
int my_printf(const char *format, ...)
{
  va_list ap;
  va_start(ap, dst);
  return vprintf(format, ap);
}
#包括
#包括
int my_printf(常量字符*格式,…)
{
va_列表ap;
va_启动(ap、dst);
返回vprintf(格式,ap);
}

您尝试过什么?我们不会为您编写代码,我们会在您遇到特定问题时提供帮助。我主要关注的是不支持可变变量的编译器,因此在这种情况下,我将如何管理打印中的参数。如果您的意思是支持
stdarg.h
,它是标准C的一部分,因为C89。@Yu Hao我想在我的代码库中使用相同的概念,我正在为elog定义宏,这应该是双向支持的。所有符合标准的C编译器都支持可变函数。我想你是说其中一个编译器不支持可变宏。