C 如何将参数传递给可变宏?
我有一个可变函数:C 如何将参数传递给可变宏?,c,function,macros,variadic-functions,variadic-macros,C,Function,Macros,Variadic Functions,Variadic Macros,我有一个可变函数: LogWrite(FILE * fp, int level, const char * filename, const char * function, ...) 应该这样称呼: LogWrite(fp, int Level, __FILE__, __FUNCTION__, "Message: %s", message) 但是,我想编写一个可变宏,以便于调用: 1: #define LOGWRITE_L1(...) LogWrite(file, 1, __FILE__,
LogWrite(FILE * fp, int level, const char * filename, const char * function, ...)
应该这样称呼:
LogWrite(fp, int Level, __FILE__, __FUNCTION__, "Message: %s", message)
但是,我想编写一个可变宏,以便于调用:
1: #define LOGWRITE_L1(...) LogWrite(file, 1, __FILE__, __FUNCTION__, ...)
or
2: #define LOGWRITE_L1(file, ...) LogWrite(file, 1, __FILE__, __FUNCTION__, ...)
这样,开发人员就可以使用以下方法调用它:
LOGWRITE_L1(myfile, "Hello!");
而不是
LogWrite(myfile, 1, __FILE__, __FUNCTION__, "Hello!")
但是,这两种方法都会给我一个编译器错误
1: expected expression before '...'
2:'file' undeclared (first use in this function)
这是可能的还是我在浪费时间?我以前从未使用过可变函数,所以不确定。我的函数可以工作…我使用完整的声明调用它,并将它写入我希望它写入的文件。您必须将
\uuu VA\u ARGS\uu
作为可变参数的替换:
#define LOGWRITE_L1(file, ...) LogWrite(file, 1, __FILE__, __FUNCTION__, __VA_ARGS__)
这只是C99、C11和C++11标准的一部分。一些编译器提供了与可变宏处理相关的扩展;检查您的手册。使用
\uu VA\u ARGS\uu
而不是。
#define LOGWRITE_L1(file, ...) LogWrite(file, 1, __FILE__, __FUNCTION__, __VA_ARGS__)
您似乎在示例代码中错误地放置了
int-Level
。。。(我很确定我知道你的意思,但最好让你来解决。)谢谢你!!哈哈,那会很尴尬的。