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);
<>所有代码将被编译。使用预处理器条件和宏定义(与
std::array::at()
std::vector::at()
已经做了边界检查。我应该写ScalarField(I,j)
而不是myrray(I)
。请根据需要在此处提供一个。如果没有,我们只能推测对于您(未知)的情况,什么可能是最好的方法。请使用#include
标题中包含的assert
。。
g++ main.cpp -Wall -Wextra -pedantic -D DEBUG
^^^^^^^^