技巧一:嵌入更多的提示資訊
通常我們使用assert(pstr),來在指標為空時,提示我們。但是這種方式的提示不夠明顯,我們也很難立刻找到是**出了問題。我們可以在assert中加入一些資訊,幫助我們立刻找到錯誤的地方。
如:assert(pstr && "函式名:錯誤資訊描述");
上面加入了一些提示資訊後,我們在指標為空,就會提示相應的資訊。
技巧二:嵌入更多更多的資訊
通常我們想在程式執行到某個意料之外的地方,做出一些提示,使用assert(0)。還是那句話,這些資訊不夠。
我們可以這樣:assert(!"這個地方按理不應該被執行");
通過取反某一字串,而提示更多的資訊。
技巧三:更好的使用assert
根據技巧一和技巧二,我們可以
#define assert(a,b) assert((a) && (b))
技巧一可以變為:assert(pstr,"
函式名:錯誤資訊描述");
技巧二可以變為:assert(0,"
這個地方按理不應該被執行");
技巧四:定義自己的巨集函式
標準c的斷言有乙個非常讓人討厭的問題:他會在偵錯程式裡中斷**到assert.c檔案,而不是你程式中斷言出現的行。我們可以編寫自己的assert巨集,偵錯程式可以直接中斷到輸入斷言的行,避免了無意義的堆疊跟蹤。
如下:#if defined(_debug)
extern bool customassertfunction(bool,char* ,int, char*);
#define assert(exp, description) \
if( customassertfunction( (int) (exp),description, __line__, __file__ )) \
} #else
#define assert( exp, description)
#endif
集合的一些技巧總結
集合的一些技巧 需要唯一嗎?需要 set 需要制定順序 需要 treeset 不需要 hashset 但是想要乙個和儲存一致的順序 有序 linkedhashset 不需要 list 需要頻繁增刪嗎?需要 linkedlist 不需要 arraylist 如何記錄每乙個容器的結構和所屬體系呢?看名字...
一些常用的演算法技巧總結
一些常用的演算法技巧總結 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true 示例 2 輸入 s rat t car 輸出 false 說明 你可以假設字串只包含小寫字母。public boolean i...
常用的一些SQL技巧歸納總結
這幾天在寫索引,想到一些有意思的 tips 希望大家有收穫。一 一些常見的 sql實踐 1 負向條件查詢不能使用索引 not in not exists 都不是好習慣 可以優化為 in查詢 2 前導模糊查詢不能使用索引 而非前導模糊查詢則可以 3 資料區分度不大的字段不宜使用索引 原因 性別只有男,...