不定长参数个数获取
获取不定数目传参个数方法
宏定义
/**@brief Implementation details for NUM_VAR_ARGS */
#define NUM_VA_ARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, N, ...) N
/**@brief Macro to get the number of arguments in a call variadic macro call
*
* param[in] ... List of arguments
*
* @retval Number of variadic arguments in the argument list
*/
#define NUM_VA_ARGS(...) NUM_VA_ARGS_IMPL(__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
使用方法
#define LOG_PRINTFI(msg, ...) \
{ \
printf("!!!!!!!Arg %d:%s", NUM_VA_ARGS(msg,##__VA_ARGS__), msg); \
}
原理解析
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!