【发布时间】:2012-05-22 10:20:27
【问题描述】:
我有一个可变参数函数:
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)
这是可能的还是我在浪费时间?我以前从未使用过可变参数函数,所以不确定。我的函数有效...我使用完整的声明调用它,并将它写入我想要的文件。
【问题讨论】:
-
您的示例代码中似乎放错了
int Level...(我很确定我知道您的意思,但最好让您修复它。) -
谢谢!哈哈,那会很尴尬。
标签: c function macros variadic-functions variadic-macros