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 ) }
好了 那些难解的宏 大致就这些了 .