斷言分爲動態斷言和靜態斷言,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平臺是運行。