Sdílet prostřednictvím


Konvence předávání a pojmenování argumentů

Specifické pro Microsoft

Kompilátory jazyka Visual C++ umožňují určit konvence pro předávání argumentů a vrátí hodnoty mezi funkcemi a volajícími.Ne všechny konvence jsou k dispozici na všech podporovaných platformách a některé konvence využívají implementace specifické pro platformu.Ve většině případů klíčová slova nebo přepínače kompilátoru určující nepodporovanou úmluvu na jednotlivých platformách jsou ignorovány a používá se výchozí konvence platformy.

Na platformách x86 jsou všechny argumenty rozšířeny na 32 bitů, pokud jsou předány.Vrácené hodnoty jsou také rozšířeny na 32 bitů a vráceny v registru EAX, kromě 8bytových struktur, které jsou vráceny v rejstříku v registrovaném páru EDX:EAX.Větší struktury jsou vráceny v registru EAX jako ukazatele pro skryté struktury vrácení.Parametry jsou vloženy do zásobníku, zprava doleva.Struktury, které nejsou POD, nebudou vráceny v registrech.

Kompilátor generuje kód prologu a epilogu k uložení a obnovení registrů ESI, EDI, EBX a EBP, jsou-li ve funkci používány.

[!POZNÁMKA]

Když je struktura, unie nebo třída vrácena z funkce hodnotou, všechny definice typu musí být stejné, jinak program může v době běhu selhat.

Informace o způsobu definování vlastního kódu prologu a epilogu funkce naleznete v tématu Volání nahé funkce.

Informace o výchozích konvencích volání v kódu, který je cílen na platformy x64, naleznete v tématu Přehled x64 konvencí volání.Informace o potížích konvence volání v kódu, který je cílen na platformy ARM naleznete v tématu Běžné problémy s migrací ARM v prostředí Visual C++.

Jsou podporovány následující konvence volání kompilátorem jazyka Visual C/C++.

Klíčové slovo

Vymazání zásobníku

Předávání parametru

__cdecl

Volající

Posune parametry zásobníku v opačném pořadí (zprava doleva).

__clrcall

není k dispozici

Načítejte parametry do zásobníku výrazu CLR v pořadí (zleva doprava).

__stdcall

Volaný

Posune parametry zásobníku v opačném pořadí (zprava doleva).

__fastcall

Volaný

Uloženo v zásobníku, poté vloženo do stohu

__thiscall

Volaný

Posunuto v zásobníku; ukazatel this je uložen v ECX

__vectorcall

Volaný

Uloží v registrech a odešle do zásobníku v opačném pořadí (zprava doleva).

Související informace naleznete v tématu Zastaralé konvence volání.

Specificka produktu Microsoft END

Viz také

Referenční dokumentace

Konvence volání