본문 바로가기
programing/C++

함수 호출 규약

by RedWiz 2015. 5. 19.

 

 

 

- __cdecl : 일반 적인 함수, 얘만 호출한 곳에서 스택 정리 -> 가변 인자 사용 가능

- __fastcall : 레지스터에 파라미터가 무려 두개! (인자가 두개 이하면 빠름)

- __stdcall : 윈도우 api 표준

- __thiscall : 클래스 멤버 함수에만 사용, 레지스터에 this 포인터 들어감

 

- callback function

 

> callback : 프로그래밍에서 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말함

콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 혹은 나중에 실행 가능

 

> 일반적으로 콜백 함수의 포인터 (핸들), 서브루틴 또는 람다함수의 형태로 전달

 

> 콜백수신 코드는 실행하는 동안에 넘겨받은 콜백 코드를 필요에 따라 호출하고 다른 작업을 실행하는 경우도 있음.

 

> 다른 방식으로는 콜백수신 코드는 넘겨받은 콜백 함수를 '핸들러'로서 등록하고, 콜백수신 함수의 동작 중 어떠한 반응의 일부로서 나중에 호출할 때 사용할 수도 있음. (비동기 콜백)

 

> 콜백은 폴리모피즘과 제네릭프로그래밍의 단순화된 대체 수법

콜백 수신 함수의 정확한 동작은 콜백 함수에 의해 바뀜. 코드 재사용 할 때 유용

 

ex) [windows에서]

#define CALLBACK    __stdcall
#define WINAPI      __stdcall

#define WINAPIV     __cdecl
#define APIENTRY    WINAPI
#define APIPRIVATE  __stdcall
#define PASCAL      __stdcall

 

'programing > C++' 카테고리의 다른 글

[펌] Let`s learn ! Effective C++  (0) 2015.06.03
code, data(bss), heap, stack  (0) 2015.05.22
C++ 입출력 함수  (0) 2015.05.14
분기문, 반복문  (0) 2015.05.07
자료형  (0) 2015.05.07