win32 api 작업시 파일 분리하기?
글쓴이: himynet / 작성시간: 수, 2005/03/09 - 10:58오전
이거 설명을 어떻게 해야 될지를 모르겠네요. Win32 Api에 관한 건데요....
보통 프로그램을 짤 때 확장성과 작업의 용의성을 생각해서 각 기능별로 파일을 분리 하지 않습니까?
근데 이 분리라는게 api를 처음 접하는 저로써는 정말 난감하네요.
어떤 기능을 모아서 a.cpp를 만들고 거기에 정의 된 펑션들을 a.h에 넣어 뒀습니다.
main.cpp에서 a.h를 인클루드해서 쓰거나 a.cpp에서 펑션들을 작성할때 메인에 정의 된 HWND 이런 핸들들이나 기타 전역 변수를 부를 때
그 많은 변수를 다 extern 할 수 도 었고 그렇다고 main.cpp에 a.cpp에서 사용될 변수들을 다 정의해 놔도 어차피 a.cpp에서 쓸려면 또 난감하네요.
도대체 api로 작업시 파일을 어떻게 분리해야 되며 전역변수나 기타 함수를 어떻게 처리해야 되는지...
한심하죠 ㅡ.ㅡ 이런거 하나 처리 못 하는 저도 깝깝하네요 ㅠ.ㅠ
제발 어떻게 해야 되는지 가르침을 부탁드립니다.
Forums:
필요성을 느끼셨다면 50%는 된겁니다.
저도 잘은 모르지만...
가급적 전역변수를 통해 모듈간 통신을 하는 방법 대신, 함수의 매개변수로써 받아서 처리하도록 만드시는게 좋다 생각합니다.
1. 동일한 대상을 처리하는 변수들을 그룹화시켜 구조체화시키세요.
struct CMyWnd {
HWND hWnd;
int nExtra;
};
2. 이 구조체를 a.cpp에서 선언하여 extern으로 처리하기보단..
main에서 선언한 후 a.cpp의 함수가 포인터를 받아 처리하는 함수형식으로 만들어보세요.
int DrawWnd( CMyWnd *pthis, char *pszString);
api냐 아니냐의 문제라기보단... linux에서 작업한다 해도 크게 달라지는건 없습니다.
어차피 나중에 가면.. 대부분의 헤더는 운영체제와 상관 없이 그대로 재사용이 가능합니다. 운영체제에 의존적인 개체는 캡슐화시켜 헤더에선 이름만 선언하고, cpp에서 정의를 하니까요.
그럼..
님ㅎ 즐~
댓글 달기