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