ASSERT在DEBUG程序時(shí)候幫了太多太多忙,不過(guò)在ASSERT判斷傳入?yún)?shù)后,還需要if再按相同條件判斷一遍,不符合規(guī)則return,這樣才是正確的邏輯。但這樣代碼難看,且工作重復(fù)無(wú)趣,又容易出現(xiàn)差漏。
剛弄了個(gè)簡(jiǎn)單EXT_ASSERT宏,按我的理解應(yīng)該可以解決問(wèn)題,但不確定是否有漏洞,發(fā)出來(lái)大家一起瞄瞄。
#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());//---- 返回空對(duì)象
}
void CXXX::FunXXX(const data* p_data)
{
EXT_ASSERT(p_data, RET_VOID);//---- 僅僅return
}