JMVC中的宏——macros.h分析

时间:2021-04-19 20:32:50
 

JMVC中的宏——macros.h分析

说明:

1.  OT表示exp==true时执行,OF表示exp==false时执行

2.  NOK表示exp!=m_nOK时执行

3.   m_nOK和m_nERR都属于ERR_CLASS类

4.   宏的第一个参数是表达式exp,如果有第二个参数的话,第二个参数为retVal,用来做返回值

 

                                                                      表1  macros.h宏定义梳理表

         

说明

代码示意

形式

不判断,直接执行

判断表达式TRUE或FALSE

判断表达式是否等于m_nOK

先ASSERT(0),再返回m_nERR

ASSERT(0);

return m_nERR;

R*

RERR

 

ROF,ROT

RNOK

没有ASSERT(0),直接返回m_nERR

return m_nERR;

R*S

RERRS

ROFS,ROTS

RNOKS

先ASSERT(0),再返回指定值(宏的第二个参数)

ASSERT(0);

return retVal;

R*R

RVAL

ROFR,ROTR

RNOKR

没有ASSERT(0),返回指定值(宏的第二个参数)

return retVal;

R*RS

ROFRS,ROTRS

RNOKS

先ASSERT(0),再返回VOID

ASSERT(0);

return;

R*V

ROFV,ROTV

RNOKV

没有ASSERT(0),返回VOID

return;

R*VS

无 

ROFVS,ROTVS

RNOKVS

ASSERT(0),不返回任何值

ASSERT(0);

A*

AF

AOF,AOT

ANOK

 

RERR、RERRS、RVAL、AF的定义:

#define RERR( )               \

{                             \

    ASSERT( 0 );              \

    return ERR_CLASS::m_nERR; \

}

 

#define RERRS( )               \

{                             \

return ERR_CLASS::m_nERR;     \

}

 

#define RVAL( retVal )        \

{                             \

    ASSERT( 0 );              \

    return retVal;            \

}

#define AF( )                 \

{                             \

    ASSERT( 0 );              \

}

 

其他定义

#if defined( _DEBUG ) || defined( DEBUG )

  #define CHECK( exp )      ASSERT( exp )

  #define AOT_DBG( exp )    AOT( exp )

  #define AOF_DBG( exp )    AOF( exp )

  #define ANOK_DBG( exp )   ANOK( exp )

  #define DO_DBG( exp )     ( exp )

#else  // _DEBUG

  #define CHECK( exp )      ((VOID_TYPE)( exp ))

  #define AOT_DBG( exp )    ((VOID_TYPE)0)

  #define AOF_DBG( exp )    ((VOID_TYPE)0)

  #define ANOK_DBG( exp )   ((VOID_TYPE)0)

  #define DO_DBG( exp )     ((VOID_TYPE)0)

#endif // _DEBUG

 

 

#if !defined( ASSERT )

#define ASSERT assert

#endif

 

#define VOID_TYPE Void

#define ERR_CLASS Err

#define ERR_VAL   ErrVal