標頭檔案及其對應描述如下
//斷言
//複數
//字元處理
// 錯誤型別
//浮點環境
//浮點型別
//整數型別格式轉換
//拼寫替換
//整數型別大小
//本地化
//數**算
//非區域性跳轉
//訊號處理
// 可變引數
//布林型別和值
//通用定義
//整數型別
//輸入輸出
// 常用工具
//字串處理
//普通數學型別
// 時間和日期
//擴充套件的多位元組/寬字元工具
// 寬字元分類和對映工具
常用檔案及檔案內函式介紹
assert.h
assert巨集的原型定義在assert.h中,其作用是如果它的條件返回錯誤,則終止程式執行,原型定義
#include
void
assert( int expression );
assert的作用是現計算表示式 expression ,如果其值為假(即為0),那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。
assert()的缺點是,頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。在除錯結束後,可以通過在包含assert.h的語句之前插入 #define ndebug 來禁用assert呼叫,示例**如下:
#include
#define ndebug
#include
stdlib.h
stdlib 標頭檔案即standard library標準庫標頭檔案。stdlib.h裡面定義了五種型別、一些巨集和通用工具函式。 型別例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;
巨集例如exit_failure、exit_success、rand_max和mb_cur_max等等;
常用的函式如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等
signal.h
signal.h是c標準函式庫中的訊號處理部分, 定義了程式執行時如何處理不同的訊號。訊號用作程序間通訊, 報告異常行為(如除零)、使用者的一些按鍵組合(如同時按下ctrl與c鍵,產生訊號sigint)
#include
void (*signal(int sig, void (*handler)(int)))(int);
signal()用於確定以後當訊號sig出現時的處理方法。如果handler的值是sig_dfl,那麼就採用實現定義的預設行為;如果handler的值是sig_ign,那麼就忽略該訊號;否則,呼叫handler所指向的函式(引數為訊號型別)。有效的訊號包括:
訊號解釋
sigabrt
異常終止,如呼叫abort()
sigfpe
算術運算出錯,如除數為0或溢位
sigill
非法函式映象,如非法指令
sigint
互動式訊號,如中斷。
sigsegv
非法訪問儲存器,如訪問不存在的記憶體單元。
sigterm
傳送給本程式的終止請求訊號
signal()返回訊號sig原來的的handler;如果出錯,則返回sig_err。
當隨後出現訊號sig時,就中斷正在執行的操作,轉而執行訊號處理函式(*handler)(sig)。如果從訊號處理程式中返回,則從中斷的位置繼續執行。
訊號的初始狀態由實現定義。
#include
int raise(int sig); //向程式傳送訊號sig。如果傳送不成功,就返回乙個非0值。
errno.h
errno.h 是c語言c標準函式庫裡的標頭檔,定義了通過錯誤碼來回報錯誤資訊的巨集。當linux c api函式發生異常時,一般會將errno變數(需include errno.h)賦乙個整數值,不同的值表示不同的含義,可以通過檢視該值推測出錯的原因。
time.h
time.h是c/c++中的日期和時間標頭檔案。
time_t time(time_t* timer) //得到從標準計時點(一般是2023年1月1日午夜)到當前時間的秒數。
clock_t clock(void) //得到從程式啟動到此次函式呼叫時累計的毫秒數。
struct tm *localtime(const time_t *timer) //返回乙個以tm結構表達的機器時間資訊
struct tm ;
math.h
math.h標頭檔案中宣告了常用的一些數**算,比如乘方,開方運算等等
C99標準之前沒有bool型別(C99提供)
我們知道在c 裡有專門的bool型別,用來表示真或假。但是在c語言裡沒有這樣的型別。表示式的值0為假,非0為真。所以條件判斷語句 if while 非常靈活,甚至乙個指標型別都可以是條件表示式。為了使程式更清晰,我們常常會給出如下的巨集定義 typedef int bool define true ...
復合文字(C99)
1.假如需要向帶有乙個int參量的函式傳遞乙個值,您可以傳遞乙個int變數,也可以傳遞乙個int常量,比如5。在c99標準之前,陣列引數的情況是不相同的 可以傳遞陣列,但沒有所謂的陣列常量可供傳遞。c99新增了復合文字 compound literal 文字是非符號常量,例如5是int型別的文字,8...
keil arm 中配置c99方法 及 C99特性
配置方法 option c c misc controls c99 附c99特性 在ansi的標準確立後,c語言的規範在一段時間內沒有大的變動,然而c 在自己的標準化建立過程中繼續發展壯大。標準修正案一 在1994年為c語言建立了乙個新標準,但是只修正了一些c89標準中的細節和增加更多更廣的國際字符...