Sdílet prostřednictvím


/ 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

  1. Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Jak: otevření stránky vlastností projektu.

  2. Klepněte C/C++ složky.

  3. Klepněte Advanced stránky vlastností.

  4. Změnit Volání úmluvy vlastnost.

Programově nastavit tuto volbu kompilátoru

Viz také

Referenční dokumentace

Možnosti kompilátoru

Možnosti nastavení kompilátoru