原标题:《Fun Extending the C Preprocessor》 评分: 22 | 作者: david2ndaccount 💭 为拼接宏,真要把调试和编译速度都献祭吗? 🎯 讨论背景 原文讨论如何扩展 C preprocessor(C 的编译前宏与条件编译机制),例如为可变参数宏计数、拼接 token,以及对参数列表实施 MAP 操作。此类技巧通常依赖多轮宏展开:CAT 是 token concatenation(将两个词法 token 拼接)的模式,NARG 是计算宏参数数量的模式,因此代码可读性和报错质量往往很差。评论所说的 C29 是下一版 C 语言标准,__COUNTER__ 是每次展开递增的预定义计数器;提议中的 __VA_COUNT__ 和 __CAT__ 则是把常见宏技巧变成编译器内建。争论的核心是:应继续为 C 的宏系统补足现代 metaprogramming 能力,还是转向 C ++ 的 constexpr 或 Zig 等语言提供的显式编译期编程机制。 📌 讨论焦点 常用宏技巧应标准化为内建 评论认为,一旦 C 项目需要稍复杂的预处理,就会反复实现两