/ Gd, parametry kompilátoru /Gr, /Gz (volací úmluva)
Tyto možnosti určují pořadí, v němž jsou argumenty funkce posune do zásobníku; zda funkce volající nebo volaný funkce odebere ze zásobníku na konci volání; argumenty a úmluva stavební dokončovací práce název, který kompilátor používá k identifikaci jednotlivých funkcí.
/Gd
/Gr
/Gz
Poznámky
[!POZNÁMKA]
Tyto volby kompilátoru jsou dostupné pouze v kompilátoru cílení x 86; Tyto volby kompilátoru nejsou k dispozici v kompilátory cílení x64 nebo Itanium.
/Gd, určuje výchozí nastavení __cdecl konvence volání u všech funkcí s výjimkou člena C++ funkcí a funkcí, které jsou označeny __stdcall nebo __fastcall.
/GrUrčuje, __fastcall konvence volání u všech funkcí s výjimkou C++ členské funkce, které jsou označeny a sfunctions __cdecl nebo __stdcall.Všechny __fastcall funkce musí mít prototypy.
/GzUrčuje, __stdcall konvence volání u všech funkcí s výjimkou člena C++ funkcí a funkcí, které jsou označeny __cdecl nebo __fastcall.Všechny __stdcall funkce musí mít prototypy.
Funkce, které proměnné počet argumentů musí být označeny __cdecl.
/Gd, /Gr, and /Gz are not compatible with /clr:safe or /clr:pure.
[!POZNÁMKA]
Pro x 86 procesorů ve výchozím nastavení použití funkce člena C++ __thiscall.
Pro všechny procesory členské funkce, která je výslovně označen jako __cdecl, __fastcall, nebo __stdcall používá zadané konvence volání.Členské funkce, která má proměnný počet argumentů vždy používá __cdecl konvence volání.
__cdecl specifikace
C __cdecl pojmenování úmluvy používá název funkce předchází znak podtržení ( _ ); Probíhá překlad není velká.Pokud není deklarován jako extern C, C++ funkcí použít různé stavební dokončovací práce název schématu.Další informace naleznete v tématu Dekorovanými názvy.
Specifika __fastcall
Některé __fastcall argumenty funkcí jsou předány v registrech (pro x 86 procesory ECX a EDX), a zbytek se posunou do zásobníku zprava doleva.Jen rutinní POP tyto argumenty ze zásobníku dříve, než se vrátí.Obvykle se /Gr sníží čas spuštění.
[!POZNÁMKA]
Buďte opatrní při použití __fastcall konvence volání pro všechny funkce v jazyce vložené sestavení.Použití registrů dojde ke konfliktu s použitím kompilátoru.
C __fastcall pojmenování úmluvy používá název funkce předchází znak (@) následovaný velikost v bajtech argumenty funkce.Provádí překlad není velká.Kompilátor používá následující šablony pro pojmenování:
@function_name@number
Při použití __fastcall konvence, použít standardní zahrnout soubory.V opačném případě dostanete nevyřešené externí odkazy.
__stdcall specifikace
A __stdcall argumenty funkcí se posunou do zásobníku zprava doleva a volaná funkce POP tyto argumenty ze zásobníku, než se vrátí.
C __stdcall pojmenování úmluvy používá název funkce předchází znak podtržení ( _ ) a následuje znak @ a velikost v bajtech argumenty funkce.Probíhá překlad není velká.Kompilátor používá následující šablony pro pojmenování:
_functionname@number
x 86 specifické
Tato možnost nemá žádný vliv na dekorace název funkce a metody jazyka C++.Pokud není deklarován jako extern C, C++, metody a funkce použít různé stavební dokončovací práce název schématu.Další informace naleznete v tématu Dekorovanými názvy.
Další informace o konvencích volání, viz Konvence volání.
Konec x 86 specifické
Chcete-li nastavit tuto možnost kompilátoru ve vývojovém prostředí Visual Studio
Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Jak: otevření stránky vlastností projektu.
Klepněte C/C++ složky.
Klepněte Advanced stránky vlastností.
Změnit Volání úmluvy vlastnost.
Programově nastavit tuto volbu kompilátoru
- Viz téma CallingConvention.