Volání s proměnlivým počtem argumentů
Částečný seznam parametrů lze ukončit zápisem tří teček, čárkou následovanou třemi tečkami (...), které označují, že funkci může předat více argumentů, ale žádné další informace o nich nejsou. Na těchto argumentech se neprovádí kontrola typu. Zápis tří teček musí předcházet alespoň jeden parametr a tento zápis tří teček musí být posledním tokenem v seznamu parametrů. Bez zápisu tří teček není chování funkce definováno, pokud obdrží jiné parametry než ty deklarované v seznamu parametrů.
Chcete-li funkci zavolat s proměnným počtem argumentů, stačí ve volání funkce zadat libovolný počet argumentů. Příkladem je funkce printf
z knihovny modulu runtime jazyka C. Volání funkce musí obsahovat jeden argument pro každý název typu, který je deklarován v seznamu parametrů nebo v seznamu typů argumentů.
Všechny argumenty zadané ve volání funkce jsou umístěny na zásobník, pokud není zadána konvence volání __fastcall
. Počet parametrů deklarovaných pro funkci určuje, kolik argumentů je odebráno ze zásobníku a přiřazeno parametrům. Jste zodpovědní za načtení jakýchkoli dalších argumentů ze zásobníku a za určení počtu přítomných argumentů. Soubor STDARG.H obsahuje makra ve stylu standardu ANSI pro přístup k argumentům funkce, která přijímá proměnný počet argumentů. Také jsou stále podporována makra ve stylu XENIX v souboru VARARGS.H.
Tato ukázka deklarace je funkcí, kterou lze volat s proměnným počtem argumentů:
int average( int first, ...);