c++总结

张开发
2026/4/16 22:16:55 15 分钟阅读

分享文章

c++总结
VA_ARGSC宏可变参数两种核心写法速览在封装日志、断言或工具宏时__VA_ARGS__是必备技能。根据是否包含“固定参数”主要分为两种写法。写法一固定参数可变参数最常用场景类似printf需要先传一个格式字符串后面跟不定数量的参数。定义// fmt是固定参数...是可变参数#defineLOG(fmt,...)printf(fmt,##__VA_ARGS__)用法LOG(错误码: %d,404);// 展开为printf(错误码: %d, 404);写法二纯可变参数无固定参数场景不需要前缀直接把传入的一整段代码原样输出常用于代码包裹或添加分号。定义// 只有...没有固定参数#definecheckKernel(...)__VA_ARGS__用法// 传入复杂的函数调用checkKernel(myFunc1,1(a,b));// 展开为myFunc1,1(a, b);避坑指南处理空参数如果可变参数可能为空例如LOG(纯文本)直接写__VA_ARGS__可能会因为多出一个逗号报错。解决方案使用##__VA_ARGS__。当参数为空时##会自动把前面的逗号“吃掉”避免语法错误。

更多文章