} while (0) 这里用到的是__VA_ARGS__宏,C99中被标准化,编译时自动替换为实际对应的参数集。 ##的作用是正确处理变长参数为空的情况。 题外话: 这里我们可以额外加入一个宏,使得vassert具有和assert一样的开关性质。 #ifdefNDEBUG#definevassert(expr, fmt, ...) ((void)0)#else#definevassert(expr, ...
[C语言]变长函数参数和变长参数宏 [C语⾔]变长函数参数和变长参数宏 C++⾥对于变化长参数已经有了较好的处理⽅案,这⾥对C语⾔的变长参数进⾏⼀个简答的总结。主要分为两块:函数和宏。函数的变长参数 常见于printf系列函数,以printf的实现为例:int printf (const char *format, ...) { va...