斷言assert

斷言分爲動態斷言和靜態斷言,assert & _Static_assert

頭文件:#include <assert.h>

1.動態斷言:

      動態斷言是在程序運行過程中進行檢查的,對程序性能有影響,所以通常在發行時,將斷言關閉。

如果斷言爲假,則assert將會在stderr中寫入一條標準錯誤輸出,並調用abort()終止程序。      

如:assert(x>0);

2.靜態斷言:

      靜態斷言是在C11中加入的特性。在程序編譯期間斷言,不生成目標代碼,因此static_assert不會造成任何運行期性能損失,對程序的運行性能沒有影響。

 格式:_Static_assert(常量表達式,提示字符串)

例如:static_assert(sizeof(void *) == 4, "64-bit code generation is not supported."); 

//確保編譯僅在32位的平臺上進行,不支持64位的平臺,該語句可以放在文件的開頭處,這樣可以儘早檢查,以節省失敗情況下的編譯時間。

static_assert(sizeof(void *) == 8, "32-bit code generation is not supported."); //確保僅能在64bit平臺是運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章