C++ 中魔法字的定义 constexpr & define

背景


在一个C++项目中对魔法字进行优化时,发现好像可以使用#define, constexpr两种方式对魔法字进行定义。

ImPlot::SetupAxesLimits(0, agp_extension.empty() ? 30 : agp_extension[0].size()-1, -20, 100);

  1. #define AGP_PLOT_X_MAX 30;
  2. constexpr int kAGPPlotXMax = 30;

结论


建议使用constexpr方法。(kAGPPlotXMax 前面的 k 代表"constant"常量)

分析


constexpr

优点:

  1. 类型安全constexpr 是类型安全的,可以用于任何类型的常量,编译器能够进行类型检查。
  2. 作用域constexpr 有作用域,与变量或函数相同,能减少命名冲突的风险。
  3. 调试友好:在调试时,constexpr 常量能显示其类型和内容,方便调试。
  4. 与模板兼容constexpr 可以用于模板参数。

缺点:

  1. 编译时限制:只能用于在编译时已知的值,不能用于运行时计算的常量。
  2. C++11 及以上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值