靜態和動態斷言除錯

2021-07-03 02:06:08 字數 591 閱讀 3841

寫程式的時候經常需要除錯,下面給出靜態和動態斷言除錯以及常用的內建巨集。

內建巨集:

__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 可斷言乙個結果是...