寫程式的時候經常需要除錯,下面給出靜態和動態斷言除錯以及常用的內建巨集。
內建巨集:
__file__//輸出檔名
__line__//所在行
__date__//日期
__time__//時間
__function__//函式名
static_assert(靜態斷言是在編譯時候用的,因此第一引數的值必須在編譯的時候就能確定,比如長量。如果第二引數為提示資訊。如果第乙個引數的表示式值為假則在編譯的時候會出錯,並給出constant-expression,
string-literal
);
第二引數值。
void assert(動態斷言在程式執行時候用的,如果表示式的結果為假,則會中斷程式。int expression
);
#include#includeusing namespace std;
void test(int mouth)
{ assert(mouth>=1&&mouth<=12);//動態斷言
cout<<__file__<
原 C斷言 靜態斷言
關於斷言,可以作為一種很強大的除錯方式或者程式執行時的錯誤診斷 但是斷言也不是適合於各種地方,伺服器軟體和嵌入式程式一般不適用,斷言會強制中斷正在執行的程式,對於伺服器等程式來說,將會是乙個災難。加上,斷言會加劇cpu 的負載,其中會呼叫一些函式。作為除錯時使用斷言是個不錯的選擇 一般斷言 ifnd...
C 斷言與靜態斷言 1
c 斷言與靜態斷言 斷言是很早之前就有的東西了,只需要引入cassert標頭檔案即可使用。往往assert被用於檢查不可能發生的行為,來確保開發者在除錯階段盡早發現 不可能 事件真的發生了,如果真的發生了,那麼就表示 的邏輯存在問題。最好的一點就是,斷言只在debug中生效,因此對於release版...
斷言使用,除錯巨集定義
除錯巨集定義,列印檔案,行數,函式名 define debuglog format,nslog ndebug info format nfile s nline d nfunction s va args file line function 使用nsparameterassert 可斷言乙個結果是...