给定以下代码(仅用于示例):
int x1 = 4;
int x2 = 5;
static_assert(x1 != x2 ,"Error");
我收到以下错误:
'x1'的值不能在常量表达式中使用
我该如何解决?
注意:我正在寻找一种解决此问题的方法,而不用这种方式更改变量的定义:
const int x1 = 4;
const int x2 = 5;
但是,我只想通过更改 static_assert(..)
您必须使用类似以下的运行时断言:
#include <cassert>
// ...
int x1 = 4;
int x2 = 5;
assert(x1 != x2);
注意:使用断言的运行时断言仅适用于在调试模式下进行编译,而在发布模式下进行编译时将被删除。因此,它们不会降低应用程序的速度。它们是零成本,因此您可以(可能应该)自由地使用它们来检查边界条件和总体正确性。
一个重要的考虑因素(道具@Bathsheba)是,这些说法应该不调用的副作用,因为这样的行为调试版本和发行版本会有所不同。
例如。
// in the release version x2 will NOT be incremented!!!
assert(x1 != x2++); // BAD!!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句