问题描述
嗨,我一直在阅读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)
。