// 第二十五章补充内容 7 调试的级别
/*#include <iostream>
#include <string>
using namespace std;
#define DEBUG 2
#if DEBUG < 2
#define ASSERT(x)
#else
#define ASSERT(x)\
if(!(x))\
{\
cout<<"错误!Assert("<<#x<<")宏函数执行失败"<<endl;\
cout<<"错误代码出现在第"<<__LINE__<<"行"<<endl;\
cout<<"错误文件在:"<<__FILE__<<endl;\
}
#endif
#if DEBUG < 3
#define SHOW(x)
#else
#define SHOW(x)\
cout<<"x:"<<x<<endl;
#endif
#if DEBUG<4
#define PRINT(x)
#else
#define PRINT(x) \
cout<<#x<<endl;
#endif
class Circel
{
public:
double check()const
{
SHOW("进行3级检查");
PRINT("进行4级检查");
return radius;
}
void set(double x)
{
ASSERT(check());
radius = x;
ASSERT(check());
}
double Result()
{
return 3.14*radius*radius;
}
private:
double radius;
};
int main()
{
Circel one;
one.set(14);
cout<<"圆的面积为"<<one.Result()<<endl;
one.set(0);
cout<<"圆的面积为"<<one.Result()<<endl;
return 0;
}*/
//注意,由于程序员之间的默认约定,宏名一定要大写,假如你不这么做,那么会令许多程序员在读你的代码时感到不适应,另外,由于宏不是函数,因此请不要在宏内进行变量的赋值或者自增操作