__cdecl, __stdcall
함수 호출규약이라 부르는 것이며, 2개 의 가장 큰 차이점은 스택 지우기 처리 주체가 다르다는 점.
__cdecl : 함수 호출한 곳에서 스택지움.
__stdcall : 해당함수가 스택지움.
/// __stdcall
void __stdcall myFunction()
{
...
}
/// __cdecl
void __cdecl myFunction()
{
...
}
//// 명시하지 않으면? __cdecl이 적용됨.
void myFunction()
{
...
}
DLL 노출함수에서 __stdcall 지정하는 코드.
__declspec(dllexport) int __stdcall myFunction()
{
...
}
/// __stdcall 을 기록하지 않으면 __cdecl 적용됨.
__declspec(dllexport) int myFunction()
{
...
}
DLL 에서는 지정하지 않으면 기본 __stdcall 이 적용된다는 말들도 있으나, __stdcall 지정하지 않고 시험해보면 __cdecl 처럼 작동한다고함
https://cboard.cprogramming.com/windows-programming/28103-__declspec-dllexport-__stdcall.html
첫등록 : 2019년 5월 13일
최종수정 :
본 글 단축주소 : https://igotit.tistory.com/2165
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
C. static 함수 선언. (0) | 2019.10.21 |
---|---|
MFC CMap Class. 등 자료형 자유로운 딕셔너리(사전) 컬렉션. (0) | 2019.05.24 |
memcmp, memcpy, memset (0) | 2019.03.13 |
float 형 변수에 할당된 4바이트 메모리의 각 바이트 단위로 접근하는법. (0) | 2019.02.20 |
win32api. MessageBox (0) | 2018.09.05 |
댓글