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 |
---|---|---|
Volající |
Posune parametry zásobníku v opačném pořadí (zprava doleva). |
|
není k dispozici |
Načítejte parametry do zásobníku výrazu CLR v pořadí (zleva doprava). |
|
Volaný |
Posune parametry zásobníku v opačném pořadí (zprava doleva). |
|
Volaný |
Uloženo v zásobníku, poté vloženo do stohu |
|
Volaný |
Posunuto v zásobníku; ukazatel this je uložen v ECX |
|
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