C语言宏:优雅地检测常量表达式
2025-04-22
本文探讨了在C语言中编写宏来检测表达式是否为常量表达式的多种方法。作者尝试了使用C23的静态复合字面量、GNU扩展的`__builtin_constant_p`、`static_assert`、`sizeof`结合复合字面量数组、`sizeof`结合枚举常量以及逗号运算符等方法。每种方法都有其优缺点,例如C23特性支持度不高,`__builtin_constant_p`依赖GNU扩展,`static_assert`和`sizeof`方法可能改变表达式的类型,逗号运算符会产生警告信息。最终作者得出结论,没有完美的方案,选择取决于具体需求和C标准版本。
开发
常量表达式