第二十五章补充内容 7 调试的级别

本文介绍了一种使用C++宏定义实现不同级别的调试输出、断言和打印功能的方法,通过设置DEBUG宏来控制调试行为,适用于不同开发阶段的需求。文章通过一个C++类示例展示了如何实现3级检查和4级检查,并在类内部调用这些函数来验证和打印关键数据,最终计算并返回圆的面积。
// 第二十五章补充内容 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;
}*/
//注意,由于程序员之间的默认约定,宏名一定要大写,假如你不这么做,那么会令许多程序员在读你的代码时感到不适应,另外,由于宏不是函数,因此请不要在宏内进行变量的赋值或者自增操作

  

转载于:https://www.cnblogs.com/xiangxiaodong/archive/2012/10/15/2725079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值