如何解决此错误“ x1的值在常量表达式中不可用”?static_assert

软件_t

给定以下代码(仅用于示例):

    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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章