关于C宏中参数后接...非可变参数语法的技术咨询
C宏定义
OUTPUT_ABORT语法疑问解答 1. 此语法的本质
这是GNU C预处理器的扩展可变参数宏写法,和标准C的可变参数宏语法不同。标准C要求将...作为宏的最后一个参数,并用__VA_ARGS__指代可变参数部分;而GNU扩展允许将...直接跟在一个参数名(这里是_status)之后,这个参数会捕获宏调用时传入的所有后续参数(包括0个),所以它本质上属于可变参数宏的范畴。2. 参考资料来源
该特性是GCC对C标准的扩展,相关说明可在GCC官方文档的「预处理器」章节中找到,具体对应「可变参数宏(Variadic Macros)」的扩展实现部分。3. 未传入
_status参数时的处理
当宏调用仅传入一个参数时,_status对应的可变参数列表为空,宏展开后abort(_status)会变为abort()——这恰好匹配标准C中abort()函数的无参数原型(void abort(void);),因此可以正常编译运行。
内容的提问来源于stack exchange,提问作者sandwood
相关产品推荐
相关产品推荐

