c宏函数中的`...'是什么?

问题描述

嗨,我一直在阅读c库,并且遇到了这样的宏函数

#define TF_LITE_KERNEL_LOG(context,...)           \
  do {                                             \  
    (context)->ReportError((context),__VA_ARGS__); \
} while (false)

我并没有完全使用...作为参数之一。谁能看到目的是什么?如果以这种方式调用函数,是否会忽略其他参数? :TF_LITE_KERNEL_LOG(context,arg1,arg2,arg3)

解决方法

这是可变参数参数标记:String被赋予宏的其余参数所替代,例如在__VA_ARGS__中,所以

printf()类似于:

TF_LITE_KERNEL_LOG(context,arg1,arg2,arg3)