__cdecl

Konkrétní společnosti Microsoft

Toto je výchozí konvence volání pro programy c a C++.Protože zásobník je vyčištěn volajícího, můžete provést vararg funkcí.__cdecl Konvence volání vytvoří spustitelné větší než __stdcall, protože vyžaduje každé volání funkce Vyčištění kód zásobníku.Následující seznam zobrazuje provádění této konvence volání.

Element

Implementace

Předávání argument pořadí

Zprava doleva

Údržba zásobníku odpovědnost

Argumenty ze zásobníku volání funkce POP.

Úprava názvu úmluvy

Při exportu __cdecl c navázání tohoto použití funkce znak podtržení (_) s výjimkou předponu názvů pro.

Případ překlad úmluvy

Překlad případu není provedena

[!POZNÁMKA]

Související informace naleznete v tématu Názvy zdobená.

Na procesor řady Itanium (IPF) a x 64 procesorů __cdecl přijat a ignorován kompilátorem; na IPF úmluvou, parametry jsou předány do rejstříku.

Umístit __cdecl modifikátor před název funkce nebo proměnná.Protože c pojmenování a konvence volání výchozí, pouze je třeba použít __cdecl je, pokud jste zadali, /Gz (stdcall) nebo volba kompilátoru parametry kompilátoru /Gr (fastcall)./Gd sil volba kompilátoru __cdecl konvence volání.

Funkce nestatický třídy Pokud je funkce definovaná mimo řádku, volající modifikátor úmluvy nemá stanovené na definici konce řádku.K nestatickému členu metody třídy, je konvence volání zadané během prohlášení se předpokládá na místě z definice.Tato definice třídy uveden

struct CMyClass {
   void __cdecl mymethod();
};

to

void CMyClass::mymethod() { return; }

odpovídá to

void __cdecl CMyClass::mymethod() { return; }

Příklad

V následujícím příkladu kompilátor pokyn, abyste používali c pojmenování a konvence pro volání system funkce:

// Example of the __cdecl keyword on function
int __cdecl system(const char *);
// Example of the __cdecl keyword on function pointer
typedef BOOL (__cdecl *funcname_ptr)(void * arg1, const char * arg2, DWORD flags, ...);

Viz také

Referenční dokumentace

Argument předávání a konvence pojmenování

Klíčových slov jazyka C++