BC++ 이나 VC++에서
char* Test2(int a, int b, int c);
이와 같이 함수 호출규약을 명시하지 않았을 때는
어떤 함수 호출규약을 따를까요?
정답은 __cdecl 입니다.
델파이에서는 뭘까요?
델파이는 __fastcall 이 디폴트입니다.
그러면 델파이와 C++과 연동할때는 어떤 함수 호출규약이 좋을까요?
내키는대로 쓰면 됩니다면,
__stdcall 을 쓰는게 무난해 보입니다.
왜냐하면 win api 가 stdcall 을 쓰는데 아무래도 외부와 인터페이싱은
이걸쓰는게 무난한 것 같습니다. 이건 정답이 있는게 아니라 개인 취향입니다.
델파이가 C++ 에 맞춰쓰는 것도 좋고
C++이 델파이에 맞춰써도 좋습니다.
델파이와 VC++과 연동하다가 한줄 적습니다.
남이 만든거 연동할때는 아무래도 호출규약이 신경이 쓰이는데,
이렇게 알면 쉽죠.
|
C++Builder에서 기본 Calling Convention이 cdecl인줄만 알았는데..
Project옵션의 Advenced Compiler에 보면 Calling convention을 정해줄수 있네요
Default로 c가 선택되어있는데..
Pascal , Register(fastcall) , Standard call 등이 선택가능 하네요
그럼..