使用断言函数 debug
杭电多校后标程里经常看见大神的代码里有断言函数,像这样:assert(a[1] == 1)
,便了解了一下断言函数。
形式:void assert (int expression);
头文件:assert.h
当括号内表达式为真时继续运行程序,为假时向系统的错误设备抛出一个错误,并退出程序。
例程:
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt","r",stdin);
char a = 'N';
assert(a != 'N');
cout << a << endl;
cout << __FUNCTION__ << ", " << __LINE__ << endl;
return 0;
}
断言括号内的表达式为假,所以运行结果:
Assertion failed!
Program: C:\Users\syf\src\ACM\test.exe
File: C:\Users\syf\src\ACM\test.cpp, Line 8
Expression: a != 'N'
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
此时没有执行9、10行的语句。
大量断言函数会减缓程序运行速度,且断言函数仅在debug时有作用。
取消代码中所有断言时在#include <assert.h>
语句前加上宏定义#define NDEBUG
即可。