C++ 禁用C+中的检查语句+;

C++ 禁用C+中的检查语句+;,c++,C++,假设我的主代码调用函数,如myarray(i),其中myarray的长度为N。在开发过程中,我可能希望在()重载中有一个CheckIndex函数。但是,当迭代次数较大时,这会浪费计算时间。另一个例子是在添加两个矩阵之前检查它们的维数是否一致,或者检查此表达式my_2D\u array\u instance/value中value是double的分母是否太小或为零 我的问题是,是否有办法让用户选择告诉编译器“跳过那些检查”,如果有,怎么做?作为πάνταῥεῖ 在注释部分,您可以使用预处理器条件来

假设我的主代码调用函数,如
myarray(i)
,其中
myarray
的长度为
N
。在开发过程中,我可能希望在
()
重载中有一个
CheckIndex
函数。但是,当迭代次数较大时,这会浪费计算时间。另一个例子是在添加两个矩阵之前检查它们的维数是否一致,或者检查此表达式
my_2D\u array\u instance/value
value
double
的分母是否太小或为零


我的问题是,是否有办法让用户选择告诉编译器“跳过那些检查”,如果有,怎么做?

作为πάνταῥεῖ 在注释部分,您可以使用预处理器条件来避免编译不想参与编译的代码,请使用以下代码:

    std::array<int, 5> a{1, 2, 3, 4, 5};

#ifdef DEBUG
    std::cout << a.at(5); //out of range
#endif

    std::cout << a.at(3);

<>所有代码将被编译。

使用预处理器条件和宏定义(与调试> /CODE >类似)是一种方式。为什么你在C++中管理自己的数组?简单地使用or有什么错?值得注意的是,
std::array::at()
std::vector::at()
已经做了边界检查。我应该写
ScalarField(I,j)
而不是
myrray(I)
。请根据需要在此处提供一个。如果没有,我们只能推测对于您(未知)的情况,什么可能是最好的方法。请使用
#include
标题中包含的
assert
。。
g++ main.cpp -Wall -Wextra -pedantic -D DEBUG 
                                     ^^^^^^^^