作用:提供斷言assert巨集,用於除錯。
引用ndebug巨集,以更方便地使用assert巨集。
用法:使用斷言:#undef ndebug #include
關閉斷言:#define ndebug #include
assert(exp); exp為真,程式繼續執行。否則,程式終止。
技巧:標頭檔案並不具有冪等性。每包含一次,assert巨集的行為都會變化。因而可以在整個原始檔
內部的各個地方開啟或關閉斷言。
另乙個方法是在make檔案或命令指令碼中控制斷言的開啟或關閉。
實現:
#undef assert
#ifdef ndebug
#define assert(test) ((void)0);
#else
void
_assert
(char*)
;#define _str(x) _val(x)
#define _val(x) #x
#define assert(test) ((test) ? (void) 0 \
//__file__和__line__是編譯器內建巨集,分別給出當前字串所在的檔名和行數。
//由於__line__實現為乙個十進位制常量而不是字串字面量,所以使用_str巨集將其轉換為字串字面量。
:_assert (
__file__
":"_str
(__line__
)" " #test)
)#endif
,定義_assert()函式
#include
#include
#include
void
_assert
(char
* mesg)
assert h標頭檔案之斷言
在現實世界中,我們腦袋時刻都在判斷對與錯,對的事情我們會繼續深入下去,而錯的事情我們會馬上停止,那麼在程式設計開發中我們如何賦予程式這種判斷事物對錯的能力呢?其中乙個方案就可以使用斷言assert,我們最常用的地方就是在函式中檢查形參的資料合法性。1 函式所屬標頭檔案 assert.h 2 函式原型...
C 標頭檔案與C標頭檔案
include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 include ...
c 頭檔案建立與使用
c 中標頭檔案的字尾名是 h 建立乙個pro.h的標頭檔案,裡面宣告兩個函式和乙個結構體 struct test 宣告結構體test int len int a,int b 宣告周長函式 int area int a,int b 宣告面積函式 再建立乙個pro.cpp函式來實現宣告函式中的內容 in...