cdecl과 stdcall은 함수 호출 규약(함수를 호출하는 방식에 대한 약속)으로, 함수의 인수 전달 방법과 반환값 처리를 정의한다.
- 인수 전달 방식
공통점 : 인수는 오른쪽에서 왼쪽으로 Stack에 Push된다.
차이점
- __cdecl : 함수가 실행된 이후 호출자가 Stack을 청소한다.
- __stdcall : 함수 자체가 Stack 청소를 담당한다.
- 성능
- __cdecl : 호출자가 Stack을 청소하기 때문에, 약간의 오버헤드가 발생할 수 있다.
- stdcall : cdecl보다 성능이 효율적이다. (차이가 아~주 미세함)
- 호환성
- __cdecl : C & c++ 에서 주로 사용된다.
- __stdcall : WinAPI 같은 Windows 환경에서 많이 사용된다.