stdarg h標頭檔案詳解

2021-09-12 15:00:34 字數 1231 閱讀 7236

stdarg.h是c語言中c標準函式庫的標頭檔,stdarg是由stdandard(標準) arguments(引數)簡化而來,主要目的為讓函式能夠接收不定量引數。[1]c++的cstdarg標頭檔中也提供這樣的機能;雖然與c的標頭檔是相容的,但是也有衝突存在。

不定引數函式(variadic functions)是stdarg.h內容典型的應用,雖然也可以使用在其他由不定引數函式呼叫的函式(例如,vprintf)。

宣告不定引數函式

不定引數函式的引數數量是可變動的,它使用省略號來忽略之後的引數。例如printf函式一般。代表性的宣告為:

int check(int a, double b, ...);
不定引數函式最少要有乙個命名的引數,所以

char *wrong(...);
在c是不被允許的(在c++中,這樣的宣告是合理的)。在c,省略符號之前必須要有逗號;在c++,則沒有這種強制要求。

定義不定引數函式

使用相同的語法來定義:

long func(char, double, int, ...);  long func(char a, double b, int c, ...)
在舊形式可能會出現較省略的函式定義:

long func();  long func(a, b, c, ...)     char a;     double b;
stdarg.h資料型別名稱 描述 相容

va_list 用來儲存巨集va_arg與巨集va_end所需資訊 c89

stdarg.h巨集

名稱 描述 相容

va_start 使va_list指向起始的引數 c89

va_arg 檢索引數 c89

va_end 釋放va_list c89

va_copy 拷貝va_list的內容 c99

例子:

#include#includevoid printargs(int arg1,...)

詳情見部落格:

C C 標頭檔案詳解

1 conio.h conio.h不是c標準庫中的標頭檔案,在c standard library,iso c 和posix標準中均沒有定義。conio是console input output 控制台輸入輸出 的簡寫,其中定義了通過控制台進行資料輸入和資料輸出的函式,主要是一些使用者通過按鍵盤產生...

C cstdio 標頭檔案詳解

header c庫執行輸入 輸出操作 輸入和輸出操作也可以在c 實現,通過使用c標準輸入和輸出庫 cstdio,在c語言中稱為stdio.h 這個庫使用流來操作物理裝置如鍵盤,印表機,終端或者系統支援的任何其他型別的檔案。流是一種以統一的方式與這些互動的抽象 所有流都具有相似的屬性,與它們所關聯的物...

Linux標頭檔案詳解

標頭檔案主目錄include 頭檔案目錄中總共有32個.h標頭檔案。其中主目錄下有13個,asm子目錄中有4個,linux子目錄中有10個,sys子目錄中有5個。這些標頭檔案各自的功能如下,具體的作用和所包含的資訊請參見第14章。a.out標頭檔案,定義了a.out執行檔案格式和一些巨集。常數符號標...