值得借鉴的 异常捕获体系 (一)

原创 2012年03月30日 14:23:14

//--------------------------------------------------------------------------------
//
// Filename   : Assert.h
//
//--------------------------------------------------------------------------------

#ifndef __ASSERT__H__
#define __ASSERT__H__

// include files
#include "BaseType.h"

extern int g_Command_Assert ;//控制参数,不提示Assert的对话框,直接忽略
extern int g_Command_IgnoreMessageBox ;//控制参数,跳过MyMessageBox的中断

//--------------------------------------------------------------------------------
//
//
//
//
//--------------------------------------------------------------------------------
VOID __assert__ (const CHAR* file, UINT line, const CHAR* func, const CHAR* expr) ;
VOID __assertex__ (const CHAR* file, UINT line, const CHAR* func, const CHAR* expr, const CHAR* msg) ;
VOID __assertspecial__ (const CHAR* file, UINT line, const CHAR* func, const CHAR* expr, const CHAR* msg) ;
VOID __messagebox__(const CHAR*msg ) ;
//--------------------------------------------------------------------------------
//
//
//
//
//--------------------------------------------------------------------------------
VOID __protocol_assert__ (const CHAR* file, UINT line, const CHAR* func, const CHAR* expr) ;

#if defined(NDEBUG)
 #define Assert(expr) ((VOID)0)
 #define AssertEx(expr,msg) ((VOID)0)
 #define AssertSpecial(expr,msg) ((VOID)0)
 #define MyMessageBox(msg) ((VOID)0)
#elif __LINUX__
 #define Assert(expr) {if(!(expr)){__assert__(__FILE__,__LINE__,__PRETTY_FUNCTION__,#expr);}}
 #define ProtocolAssert(expr) ((VOID)((expr)?0:(__protocol_assert__(__FILE__,__LINE__,__PRETTY_FUNCTION__,#expr),0)))
 #define AssertEx(expr,msg) {if(!(expr)){__assertex__(__FILE__,__LINE__,__PRETTY_FUNCTION__,#expr,msg);}}
 #define AssertSpecial(expr,msg) {if(!(expr)){__assertspecial__(__FILE__,__LINE__,__PRETTY_FUNCTION__,#expr,msg);}}
 #define AssertExPass(expr,msg) {if(!(expr)){__assertex__(__FILE__,__LINE__,__PRETTY_FUNCTION__,#expr,msg);}}
 #define MyMessageBox(msg) ((VOID)0)
#elif __WIN_CONSOLE__ || __WIN32__ || __WINDOWS__
 #define Assert(expr) ((VOID)((expr)?0:(__assert__(__FILE__,__LINE__,__FUNCTION__,#expr),0)))
 #define AssertEx(expr,msg) ((VOID)((expr)?0:(__assertex__(__FILE__,__LINE__,__FUNCTION__,#expr,msg),0)))
 #define AssertSpecial(expr,msg) ((VOID)((expr)?0:(__assertspecial__(__FILE__,__LINE__,__FUNCTION__,#expr,msg),0)))
 #define MyMessageBox(msg) __messagebox__(msg)
#elif __MFC__
 #define Assert(expr) ASSERT(expr)
 #define AssertEx(expr,msg) ((VOID)0)
 #define AssertSpecial(expr,msg) ((VOID)0)
 #define MyMessageBox(msg) ((VOID)0)
#endif

#endif

值得借鉴的 异常捕获体系 (二)

#include "stdafx.h" //-----------------------------------------------------------------------------...
  • gumingyaotangwei
  • gumingyaotangwei
  • 2012年03月30日 14:23
  • 616

值得借鉴的 异常捕获体系 (三)

#if defined(__WINDOWS__)  #if defined(NDEBUG)   #define __ENTER_FUNCTION {try{   #define __LEAVE_...
  • gumingyaotangwei
  • gumingyaotangwei
  • 2012年03月30日 14:26
  • 610

[转]值得借鉴的工作经验

第一:不要认为停留在心灵的舒适区域内是可以原谅的。    每个人都有一个舒适区域,在这个区域内是很自我的,不愿意被打扰,不愿意被push,不愿意和陌生的面孔交谈,不愿意被人指责,不愿意按照规定的时限做...
  • xin198404
  • xin198404
  • 2009年06月16日 20:54
  • 305

在网上看到的值得借鉴的网站,记录下来

希望对互联网创业的人有所启发。 001 oMoby.com——手机视觉搜索  002 AmazType.tha.jp——基于亚马逊的新型搜索  003 Groupon.com——每天团购一次...
  • qq_31194443
  • qq_31194443
  • 2016年03月26日 18:08
  • 492

值得借鉴的makefile

GCC=arm-vfp_uclibc-linux-gnu-gcc CFLAGS=-g3 SRC = sample_fillrect.c APP = sample_fillrect SD...
  • w_ww_w
  • w_ww_w
  • 2011年12月02日 10:53
  • 568

值得借鉴的文章

[前言]这是摘自李开复老师建立的学生      网里的一篇文章.真的很有启发.一,别以为在学生会你能得到你曾经想要的。工作的热情很可能因为你所看到的所经历的一些事而改变,但是也不必惧怕。你有大一一年来...
  • jianai1314
  • jianai1314
  • 2010年07月27日 08:42
  • 288

java异常体系以及异常的捕获和处理和图解详解

java 异常是程序运行过程中出现的错误。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中定义了许多异常类,分为两大类,错误...
  • dianzijinglin
  • dianzijinglin
  • 2016年08月18日 15:55
  • 845

如何借鉴一个优秀的网站

心得如果想成为一个好的前端开发者,我觉得浏览大量优秀的网站是必不可少的。除了提高自己的审美以外,还可以欣赏到许多特别优秀的交互效果,这样不仅可以迅速提高自己的技能,还可以丰富自己的想象力。当然这一切都...
  • iamcgt
  • iamcgt
  • 2017年06月05日 00:11
  • 375

Google编程风格-值得借鉴

https://code.google.com/p/google-styleguide/
  • backard
  • backard
  • 2014年01月28日 15:12
  • 318

产品设计原则之五:学会借鉴那些成功的产品

站在巨人肩膀上的牛顿曾说过:尿得远是因为站得高。无论是微软还是腾讯,似乎也都曾经告诉我们过这样的一个事实。很多时候他们并不是某个主意或者技术的原创者,但是到最后他们却是最终的受益者。在这片神奇的土地上...
  • aofengdaxia
  • aofengdaxia
  • 2011年08月22日 07:14
  • 3578
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:值得借鉴的 异常捕获体系 (一)
举报原因:
原因补充:

(最多只允许输入30个字)