1. 程式人生 > >斷言assert

斷言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平臺是執行。