윈도우 프로그래밍에서 궁금한게 있습니다..

kid1402의 이미지

Window API 예제 소스를 보다보면 다양한 키워드를 만날 수 있습니다.

예를 들어

DWORD WINAPI threadFunc()
{
...
}

저기서 DWORD는 리턴 타입, threadFunc()는 함수 이름인데

이때 WINAPI 키워드의 역할이 정확히 뭔지 궁금해서요.

딱히 저 키워드 외에도 IN , OUT 등의 다양한 키워드가 있는데 , 그냥 구분하기 위한 키워드 인가요?

답변 부탁드립니다!

kid1402의 이미지

소스를 뒤져보니 __in 이나 __out, __in_opt, __out_opt 는 Buffer Annotation, 말 그대로 구분을 용이하게 하기 위해 쓰이는거 같고..

WINAPI는 __stdcall 로 정의 되어 있는데 이건 잘 모르겠네요..혹시 아시는분?ㅠㅠ

pogusm의 이미지

kid1402의 이미지

감사합니다! 많은 도움이 됬습니다ㅠㅠ

tachyon92의 이미지

http://qufl1999.egloos.com/2338204

에서 printf가 stdcall, 윈도우 API 함수들이 cdecl 이라고 되어있는데 그 반대입니다. 아래쪽은 안 읽어봐서 윗부분만 잘못된 것일 수도 있겠군요.

덧붙이자면, 호출규약은 5개뿐 아니라 register(fastcall과 같던가? 잘 모르겠습니다.), pascal, safecall 등 다양하고, 심지어 컴파일러를 만들거나 어셈블리어로 프로그래밍을 한다던가 하는 경우에는, 직접 새로운 규약을 정의해서 쓸 수도 있을 것 같네요.