규약(calling convention)을 지정합니다. 다음은 MSDN에서 발췌한 호출규약 요약입니다.
[호출규약 : __cdecl]
Element | Implementation |
---|---|
Argument-passing order 인자 전달 순서 |
Right to left 오른쪽에서 왼쪽 순서로 스택으로 전달 |
Stack-maintenance responsibility 스택 정리 |
Calling function pops the arguments from the stack 호출한 측에서 인자를 스택에서 꺼냄 |
Name-decoration convention 명명 규칙 |
Underscore character (_) is prefixed to names 이름 앞에 언더스코어(_)가 붙음 |
Case-translation convention 대소문자 변환 |
No case translation performed 대소문자 변환 없음 |
[호출규약 : __stdcall]
Element | Implementation |
---|---|
Argument-passing order 인자 전달 순서 |
Right to left. 오른쪽에서 왼쪽 순서로 스택으로 전달 |
Stack-maintenance responsibility 스택 정리 |
Called function pops its own arguments from the stack. 불려진 함수가 스택에서 인자를 꺼냄 |
Name-decoration convention 명명규칙 |
An underscore (_) is prefixed to the name. The name is followed by
the at sign (@) followed by the number of bytes (in decimal) in the
argument list. Therefore, the function declared as
|
Case-translation convention 대소문자 변환 |
None 없음 |
[호출규약 : __fastcall]
Element | Implementation |
---|---|
Argument-passing order 인자 전달 순서 |
The first two DWORD or smaller arguments are passed in ECX and EDX registers; all other arguments are passed right to left. 처음 두 개의 DWORD 이하의 크기를 가지는 인자는 ECX와 EDX레지스터로 전달, 나머지 인자는 오른쪽에서 왼쪽으로 스택을 통해 전달 |
Stack-maintenance responsibility 스택 정리 |
Called function pops the arguments from the stack. 불려진 함수가 스택에서 인자를 꺼냄 |
Name-decoration convention 명명 규칙 |
At sign (@) is prefixed to names; an at sign followed by the number of bytes (in decimal) in the parameter list is suffixed to names. 이름 앞에 @가 붙음. 이름 뒤에도 @표시가 붙고 그 뒤에 인자 목록의 바이트수가 10진수로 이어짐. |
Case-translation convention 대소문자 변환 |
No case translation performed. 변환 없음 |
예제 참고
http://blog.daum.net/expression/18312680