stdafx.h / stdafx.cpp (Precompiled header) 개념
* 발단
win api에서 본격적으로 클래스 구조에 대해 수업을 진행하는 중이다. 이전에는 아주 간단한 프레임 워크로 게임을 제작하였기에 구조에 대해 어려움이 없었지만, 선생님이 예시로 보여준 간단한 슈팅게임 클래스조차 처음보는 내겐 꽤나 복잡해 보여 본격적으로 클래스 구조에 대해 알아보기 위해 아주 기본부터 다시 짚어가보게 되었다.
* stdafx.h / stdafx.cpp 가 갑자기 왜 나온걸까?
- stdafx(Standard Application Freamworks) : 개발자 생상성 향상을 위해 MS에서 제공하는 소프트웨어 라이브러리 체계를 뜻하며, MFC로 구성되어 있다.
- 많이 사용되는 application framework
1) .NET Framework(Windows 계열)
2) Cocoa(Objective C / Mac OS X)
3) Swing(Java)
일부 헤더 파일의 경우 방대한 크기의 소스코드를 포함(예를 들면 window.h)하고, 이를 매번 컴파일 하면 컴파일 시간이 매우 길어진다. 그래서 자주 바뀌지 않는 기본 라이브러리의 경우 컴파일 시간 단축을 위해 컴파일러가 사전에 헤더 파일을 미리 컴파일 해놓고 쓴다.
이렇게 컴파일 시간을 줄이기 위해 사전에 컴파일한 결과물이 VC의 경우 pch(precompiled header) 확장자로 저장.

precompiled header 를 사용할 경우 precompiled header로 지정한 헤더 파일 및 소스 코드는 컴파일시 컴파일 되지 않고 pch의 결과물을 가져다가 사용(아하.... 첫 디버거 테스트에 컴파일 시간이 오래 걸리는 이유구만...)
* stdafx.h / stdafx.cpp 의 용도와 포함 정보
- MFC에서 자주 사용되는 공용 소스를 precompiled header로 만들어 제공하기 위함
- 포함 정보 : 기본 프레임워크 구축에 필요한 필수 헤더
1) 윈도우 객체 생성에 필요한 기본 클래스(afx.h / afxwin.h 등)
2) 윈도우 컨트롤(afxctl.h / afxcmn.h 등)
3) 기본 DB 관련 클래스(afxdb.h / afxdao.h)
4) 네트워크 관련 클래스(afxsock.h)
* stdafx.h 에 넣는 정보
- 한번 빌드해놓고 다음에는 재빌드를 안하고 쓰는 모듈이 되는 정보들
- 프로젝트 진행 중 값이 바뀌지 않는 외부 라이브러리나 전역 변수
win api에서 본격적으로 클래스 구조에 대해 수업을 진행하는 중이다. 이전에는 아주 간단한 프레임 워크로 게임을 제작하였기에 구조에 대해 어려움이 없었지만, 선생님이 예시로 보여준 간단한 슈팅게임 클래스조차 처음보는 내겐 꽤나 복잡해 보여 본격적으로 클래스 구조에 대해 알아보기 위해 아주 기본부터 다시 짚어가보게 되었다.
* stdafx.h / stdafx.cpp 가 갑자기 왜 나온걸까?
- stdafx(Standard Application Freamworks) : 개발자 생상성 향상을 위해 MS에서 제공하는 소프트웨어 라이브러리 체계를 뜻하며, MFC로 구성되어 있다.
- 많이 사용되는 application framework
1) .NET Framework(Windows 계열)
2) Cocoa(Objective C / Mac OS X)
3) Swing(Java)
일부 헤더 파일의 경우 방대한 크기의 소스코드를 포함(예를 들면 window.h)하고, 이를 매번 컴파일 하면 컴파일 시간이 매우 길어진다. 그래서 자주 바뀌지 않는 기본 라이브러리의 경우 컴파일 시간 단축을 위해 컴파일러가 사전에 헤더 파일을 미리 컴파일 해놓고 쓴다.
이렇게 컴파일 시간을 줄이기 위해 사전에 컴파일한 결과물이 VC의 경우 pch(precompiled header) 확장자로 저장.

precompiled header 를 사용할 경우 precompiled header로 지정한 헤더 파일 및 소스 코드는 컴파일시 컴파일 되지 않고 pch의 결과물을 가져다가 사용(아하.... 첫 디버거 테스트에 컴파일 시간이 오래 걸리는 이유구만...)
* stdafx.h / stdafx.cpp 의 용도와 포함 정보
- MFC에서 자주 사용되는 공용 소스를 precompiled header로 만들어 제공하기 위함
- 포함 정보 : 기본 프레임워크 구축에 필요한 필수 헤더
1) 윈도우 객체 생성에 필요한 기본 클래스(afx.h / afxwin.h 등)
2) 윈도우 컨트롤(afxctl.h / afxcmn.h 등)
3) 기본 DB 관련 클래스(afxdb.h / afxdao.h)
4) 네트워크 관련 클래스(afxsock.h)
* stdafx.h 에 넣는 정보
- 한번 빌드해놓고 다음에는 재빌드를 안하고 쓰는 모듈이 되는 정보들
- 프로젝트 진행 중 값이 바뀌지 않는 외부 라이브러리나 전역 변수
댓글
댓글 쓰기