在开发C++程序的过程中
调试标记
当进行程序开发时
通过预处理器调试标记
可以利用预处理器标记来分离出用于调试的代码和确保程序正常工作的代码#define FOOBAR
(一般用DEBUGifdef ifndef
等预处理语句可以实现这个目的undef
来表示调试已经完成
#define DEBUG
#undef DEBUG
//***
#ifdef DEBUG
//***
#endif
运行期调试标记
某些情况下
//****
bool debug = false;
int main(int argc, char* argv[]){
if(string(argv[i])== "--debug=on") debug = true;
//****
}
将变量和表达式表示为字符串
若在编写程序的时候可以将字符串和变量名与其内容一一用输出打印函数组成打印表达式
#define PR(x) cout << #x << " = " << endl;
它与如下语句具有同样的效果
cout << "a = " << a << endl;
在实际使用的时候也可以使用ifdef来使得P(A) 不起作用
C语言assert()宏
头文件<cassert>中
#include <cassert>
using namespace std;
int main(){
int i=100;
assert(i!=100);//fails
}
在完成调试后#include<cassert>
前定义 #define NDEBUG
来消除宏产生的测试代码