ASSERT在DEBUG程序時候幫了太多太多忙,不過在ASSERT判斷傳入?yún)?shù)后,還需要if再按相同條件判斷一遍,不符合規(guī)則return,這樣才是正確的邏輯。但這樣代碼難看,且工作重復(fù)無趣,又容易出現(xiàn)差漏。
剛弄了個簡單EXT_ASSERT宏,按我的理解應(yīng)該可以解決問題,但不確定是否有漏洞,發(fā)出來大家一起瞄瞄。
#define RET_VOID
#define EX_ASSERT(exp, ret) {ASSERT(exp);if(!(exp))return(ret);}
BOOL CXXX::FunXXX(const data* p_data)
{
EXT_ASSERT(p_data, FALSE);//---- 返回BOOL型
}
int CXXX::FunXXX(const data* p_data)
{
EXT_ASSERT(p_data, -1);//---- 返回int型
}
const retdata* CXXX::FunXXX(const data* p_data)
{
EXT_ASSERT(p_data, NULL);//---- 返回NULL指針
}
retdata CXXX::FunXXX(const data* p_data)
{
EXT_ASSERT(p_data, retdata());//---- 返回空對象
}
void CXXX::FunXXX(const data* p_data)
{
EXT_ASSERT(p_data, RET_VOID);//---- 僅僅return
}