c語言標準庫詳解(十) 診斷函式assert h

2021-10-05 18:16:32 字數 1993 閱讀 2752

中只有乙個assert巨集。

assert巨集用於為程式增加診斷功能,形式如下:

void

assert

(int expression)

如果執行語句

assert

(expression)

時,表示式的值為0,則assert巨集將在stderr中列印一條訊息,比如:

assertion failed:表示式,file 源檔名,line 行號
列印訊息後,該巨集將呼叫abort終止程式的執行。其中的原始檔和行號來自於預處理器巨集__file__以及__line__。

如果定義了巨集ndebug,同時又包含了標頭檔案,則assert巨集將被忽略。

#include

#include

intmain()

&'c:\users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugadapters\bin\windowsdebuglauncher.exe'

'--stdin=microsoft-miengine-in-ce44jt01.wkp'

'--stdout=microsoft-miengine-out-z401vdid.zwc'

'--stderr=microsoft-miengine-error-bzwjf2pm.eif'

'--pid=microsoft-miengine-pid-ceq5e0lw.rgk'

'--dbgexe=g:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe'

'--interpreter=mi'

請輸入乙個整數值: 9

assertion failed!

expression: a >= 10

&'c:\users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugadapters\bin\windowsdebuglauncher.exe'

'--stdin=microsoft-miengine-in-bksgqqtk.pn1'

'--stdout=microsoft-miengine-out-ifhvr50v.2wj'

'--stderr=microsoft-miengine-error-jy0bmmwd.a2a'

'--pid=microsoft-miengine-pid-2ihgcj2f.q4x'

'--dbgexe=g:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe'

'--interpreter=mi'

請輸入乙個整數值: 11

輸入的整數是: 11

請輸入字串: long live open

source

輸入的字串是: long

assert

(noffset>=

0&& noffset+nsize<=m_ninfomationsize)

;

改為:

assert

(noffset >=0)

;assert

(noffset+nsize <= m_ninfomationsize)

;

assert

(i++

<

100)

;

改為:

assert

(i <

100)

i++;

#include

#define ndebug

#include

C語言標準庫函式qsort詳解

功 能 使用快速排序例程進行排序 標頭檔案 stdlib.h 用 法 void qsort void base,int nelem,int width,int fcmp const void const void 引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指...

詳解C標準庫堆記憶體函式

c標準庫堆記憶體函式有4個 malloc free calloc realloc,其函式宣告放在了 include 中,主要用來申請和釋放堆記憶體。堆記憶體的申請和釋放 wiki,chs 需要發起系統呼叫,會帶來昂貴的上下文切換 使用者態切換到核心態 十分耗時。另外,這些過程可能是帶鎖的,難以並行化...

C語言標準庫的常用函式

int printf const char format,傳送格式化輸出到標準輸出 stdout。int sprintf char str,const char format,傳送格式化輸出到str所指向的字串。double atof const char str 把引數str所指向的字串轉換為乙個...