【发布时间】:2020-08-25 06:48:39
【问题描述】:
您好,我一直在阅读一个 c 库,并且遇到过这样的宏函数:
#define TF_LITE_KERNEL_LOG(context, ...) \
do { \
(context)->ReportError((context),__VA_ARGS__); \
} while (false)
我并没有完全理解使用... 作为参数之一。谁能看出它的目的是什么?如果以这样的方式调用函数,它是否会忽略其他参数? :TF_LITE_KERNEL_LOG(context, arg1, arg2, arg3)
【问题讨论】:
-
@Dai 宏,不是函数。
-
@Dai 是预处理器的东西,与可变参数函数完全无关。
-
值得注意的是,可变参数函数(不幸的是)一直是 C 的一部分,但可变参数宏是在 1999 年引入的。
标签: c macros c-preprocessor