Udostępnij za pośrednictwem


__cdecl

Programu Microsoft

Jest to wartość domyślna konwencji wywoływania dla programów c i C++.Ponieważ stos jest czyszczona przez rozmówcę, można zrobić vararg funkcji.__cdecl Konwencji wywoływania tworzy większe pliki wykonywalne niż __stdcall, ponieważ wymaga on zawierać kod porządkujący stosu każdego wywołania funkcji.Na poniższej liście przedstawiono wdrażania niniejszej konwencji wywoływania.

Element

Wdrożenie

Kolejność przekazywania argumentu

Od prawej do lewej

Odpowiedzialność za utrzymanie stosu

Wywołanie funkcji POP argumenty ze stosu

Przekręcenie nazwy Konwencji

Znak podkreślenia (_) jest prefiksem nazwy, z wyjątkiem podczas eksportowania __cdecl funkcje tego powiązania c użycia.

Tłumaczenie przypadku Konwencji

Nie tłumaczenia sprawa

[!UWAGA]

Aby uzyskać pokrewne informacje, zobacz Nazwy zdobione.

W systemach z rodziny procesor Itanium (IPF) i procesorów x 64 __cdecl jest akceptowane i ignorowane przez kompilator; na IPF przez Konwencję, parametry są przekazywane w rejestrze.

Umieścić __cdecl modyfikator przed zmiennej lub nazwę funkcji.Ponieważ c nazewnictwa i konwencje wywoływania są domyślnie, tylko wtedy należy użyć __cdecl jest, gdy określono opcję kompilatora się przełączników /Gr (fastcall) lub /Gz (stdcall)./Gd sił opcji kompilatora __cdecl konwencji wywoływania.

Funkcje klasy-statycznej Jeśli funkcja jest zdefiniowane poza wiersza, modyfikator konwencji wywoływania nie muszą zostać określone w definicji wiersza.Oznacza to, że dla metod niestatycznego członka klasy, konwencja wywołania określonej podczas deklaracji zakłada się w punkcie uderzenia definicji.Biorąc pod uwagę niniejszej definicji klasy

struct CMyClass {
   void __cdecl mymethod();
};

to

void CMyClass::mymethod() { return; }

jest to równoważne

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

Przykład

W poniższym przykładzie kompilator jest zalecane jest używanie c nazewnictwa i konwencji wywoływania system funkcji:

// 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, ...);

Zobacz też

Informacje

Argument, przekazując i konwencji nazewnictwa

Słów kluczowych języka C++