다음을 통해 공유


__cdecl

Microsoft 전용

이 호출 규칙이 C 및 C++ 프로그램에 대 한 기본값입니다.스택은 호출자가 정리 하므로 할 수 vararg 함수입니다.__cdecl 호출 보다 더 큰 실행 파일을 만듭니다 __stdcall, 각 함수 호출 스택 정리 코드를 포함 해야 하기 때문에.다음은이 호출 규칙의 구현을 보여 줍니다.

요소

구현

인수 전달 순서

오른쪽에서 왼쪽

스택 유지 관리 담당

함수를 호출 스택에서 인수 팝

규칙 이름 데코레이션

해당 사용 C 링크 함수 __cdecl 내보내는 경우 밑줄 문자 (_) 이름에서 제외 하 고 붙습니다.

대/소문자 변환 규칙

대/소문자 변환은 수행 되지 않습니다

[!참고]

관련된 정보를 참조 하십시오. 데코레이팅된 이름.

Itanium 프로세서 제품군 (IPF) 및 x64 프로세서 __cdecl 수락 및 컴파일러에서; 무시 IPF에 규칙에 따라 매개 변수 레지스터에 전달 됩니다.

배치는 _ _cdecl 한정자를 변수 또는 함수 이름입니다.기본 C 명명 및 호출 규칙 이기 때문에 __ 사용에 필요한cdecl /gz (stdcall)를 사용 하거나 (fastcall) /Gr 컴파일러 옵션을 지정 하는 경우입니다./Gd 컴파일러 옵션 세력의 __cdecl 호출 규칙입니다.

정의 된 출력 줄을 함수는 경우 비정적 클래스 함수에 대 한 호출 규칙 한정자 줄의 정의를 지정할 수 없습니다.즉, 클래스에서 비정적 멤버 메서드를 선언 도중 지정 된 호출 규칙 정의에 사용 됩니다.이렇게 클래스 정의

struct CMyClass {
   void __cdecl mymethod();
};

this

void CMyClass::mymethod() { return; }

이렇게 하는 것과 같습니다.

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

예제

다음 예제에서는 컴파일러가 C 명명 및 호출 규칙을 사용 하도록 지시는 system 함수:

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

참고 항목

참조

인수를 전달 하 고 명명 규칙

C + + 키워드