C中的函数具有无限的参数?
我想用C语言定义一个函数,它可以接受任意数据类型的无限数量的参数。 例如: printf()
, scanf()
等。
对此有何想法?
要在C中使用可变数量的参数,您需要包含标题
#include
printf()
是一个带有可变数量参数的函数示例。
int printf(const char *fmt, ...)
更多信息在这里
将函数声明为...
最后一个参数。 您需要使用
的宏来作为va_list
访问参数。
如果你只是想要“喜欢printf
但有一点额外行为”的东西,那么你可以将va_list
传递给vprintf
, vfprintf
或vsprintf
。
#include #include #include #ifdef __GNUC__ __attribute__((format(printf, 1, 2))) #endif void PrintErrorMsg(const char* fmt, ...) { time_t now; char buffer[20]; va_list args; va_start(args, fmt); time(&now); strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", gmtime(&now)); fprintf(stderr, "[%s] ", buffer); vfprintf(stderr, fmt, args); fputc('\n', stderr); va_end(args); }
void printf(char* format, ...) { }
查找Variadic函数和varargs.h
或stdarg.h
(取决于编译器)。
请参阅
标题和相关文档。