gpt4 book ai didi

c - 如何将参数传递给可变参数宏?

转载 作者:太空狗 更新时间:2023-10-29 15:16:39 24 4
gpt4 key购买 nike

我有一个可变函数:

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)

这是可能的还是我在浪费时间?我以前从未使用过可变参数函数,所以不确定。我的函数有效...我使用完整的声明调用它并将它写入我想要的文件。

最佳答案

您必须将 __VA_ARGS__ 替换为可变参数:

#define LOGWRITE_L1(file, ...) LogWrite(file, 1, __FILE__, __FUNCTION__, __VA_ARGS__)

这只是 C99、C11 和 C++11 标准的一部分。一些编译器提供了与可变参数宏处理有关的扩展;查看您的手册。

关于c - 如何将参数传递给可变参数宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com