JMVC 宏部分

    技术2025-03-15  37

    JMVC的代码非常难以理解,尤其是宏部分

    看了一篇专门讲宏的文章,就分享一下吧

    本文讨论的宏定义于macros.h

     

    大部分宏的开头字母是R , 这次R的含义是 Return

    比如 RERR   ,  就是 Return 一个错误值  , 该值定义于ERR 类中的m_nERR.

    不在开头位置的字母R , 此时的含义是该宏返回的值并非错误值 , 而是宏所输入的参数

    retVal .

    比如 ROFR (exp, retVal)  的函数是  if ( !exp )  Return retVal

    字母 O  ,  其含义是判断宏的输入参数 exp 的意思  F 的含义是 Fasle, T 的含义是 TRUE

    比如  ROF(exp)  其含义就是   if( !exp )  ERRR

    ROT(exp) 其含义为 if( exp ) ERRR

     字母 S  , 一般位于宏的末尾 , 其含义是无 Assert 操作 .

    前面所说的宏 , 除了已经说明的含义外, 还有一个操作是 Assert( 0 )

    但是 如果 宏的尾巴上加了S , 那这个宏不会 Assert( 0 )

    好了 这下大部分宏的意思就可以看懂了

    RERR , 就是 ASSERT (0 ) ; Return  ERR值

    ROF(exp)     就是 if ( !exp ) { ASSERT (0);  RERR }

    ROFS(exp)   就是 if( !exp ) { RERR }

    ROT(exp)  就是  if( exp ) { ASSERT(0);  RERR }

    ROTS( exp ) 就是  if ( exp ) {  ERRR }

    ROFR(exp,retVal)  就是 if( !exp ) { ASSERT(0) ; Return retVal; }

    ROFRS(exp, retVal) 就是 if( !exp ) { Return retVal; }

     

    其他大致如此  .

    另外还有几个重要的 , 就是  NOK , 就是要检查值是否等于 ERR 中定义的 m_nOK

    比如 RNOK(exp ) 就是  if( exp != OK ){ Assert(0); return exp;}

    RNOKR(exp,retVal) 就是 if( exp != OK ) { Assert(0); return retVal; }

    还有一个是 A , A 表示 Assert

    比如 AF  就是  Assert( False )

    ANOK(exp) 就是  if( exp != OK ) { Assert(0) }

    AOF( exp )  :   if( !exp )  { Assert(0) }

    AOT( exp) :   if( exp ) {  Assert( 0 ) }

     好了   那些难解的宏 大致就这些了 .  

     Reference 

     

    最新回复(0)