4.2.1.1 参数传递与默认值 4.2.1.1 参数传递与默认值:宏函数里最危险的“温柔陷阱”——当 编译通过却悄然崩溃时,你在调试什么? 你有没有在凌晨两点盯着一段看似无害的宏定义,反复单步、加日志、改断点,最后发现崩溃点不在函数体里,而是在宏展开后那行根本没写过的代码上? 有没有在 Code Review 时被同事一句“这宏默认值写法很 C++ 风格啊”点醒,才猛然意识到:我们正用预处理器模拟函数语义,却忘了它连语法树都不生成——它只做字符串拼接。 这不是编译器 bug。 这是宏的宿命。 更是工程师对“参数传递与默认值”这一表层语法糖背后真实机制缺乏敬畏的代价。 今天,我们不谈宏该不该用,也不争论 C++17 是否已取代它。