背景
在一个C++项目中对魔法字进行优化时,发现好像可以使用#define, constexpr两种方式对魔法字进行定义。
ImPlot::SetupAxesLimits(0, agp_extension.empty() ? 30 : agp_extension[0].size()-1, -20, 100);
#define AGP_PLOT_X_MAX 30;constexpr int kAGPPlotXMax = 30;
结论
建议使用constexpr方法。(kAGPPlotXMax 前面的 k 代表"constant"常量)
分析
constexpr
优点:
- 类型安全:
constexpr是类型安全的,可以用于任何类型的常量,编译器能够进行类型检查。 - 作用域:
constexpr有作用域,与变量或函数相同,能减少命名冲突的风险。 - 调试友好:在调试时,
constexpr常量能显示其类型和内容,方便调试。 - 与模板兼容:
constexpr可以用于模板参数。
缺点:
- 编译时限制:只能用于在编译时已知的值,不能用于运行时计算的常量。
- C++11 及以上

最低0.47元/天 解锁文章
928

被折叠的 条评论
为什么被折叠?



