10월, 2014의 게시물 표시

Precompiled header 에 대해서 ( stdafx.h 와 stdafx.cpp )

이미지
Visual C++ 위자드로 자동 생성되는 코드들 중에서  stdafx.h  와  stdafx.cpp  이 있다.  여기에서 stdafx 란  Standard Application Freamworks  의 약자로 개발자들의 생산성 향상을 위해 MS 에서 제공하는 소프트웨어 라이브러리 체계를 뜻하며, MFC 로 구성되어 있다. 참고로 많이 사용되는 application framework 로는 .NET Framework( Windows 계열 ),  Cocoa ( Objective C / Mac OS X), Swing (Java) 등이 있다. 그럼 Precompiled header (미리 컴파일된 헤더. 여기에서는 precompiled header 로 통일) 란 무엇인가...  C / C++ 언어에서 헤더 파일은  C 전처리기(preprocessor) 에 의해 자동적으로 소스 코드를 포함 하게 된다.  그런데 일부 헤더 파일의 경우 방대한 크기의 소스 코드를 포함할 수 있고( 예를 들면 window.h), 이런 코드들을 매번 컴파일하면 컴파일 시간이 매우 길어지게 된다. 그래서 자주 바뀌지 않는 기본적인 라이브러리들의 경우에 컴파일 시간을 줄이고자 컴파일러가 사전에 헤더 파일들을 미리 컴파일 해 놓고 쓸 수 있게 하고 있다.  이렇게 컴파일 시간을 줄이기 위해 사전에 컴파일한 결과물이 VC 의 경우  pch(precompiled header) 라는 확장자 명 으로 저장된다. 비주얼 스튜디어의 솔루션 폴더에 생기는 프로젝트명.pch 가 바로 그것이다. precompiled header 를 사용할 경우 precompiled header 로 지정한 헤더 파일 및 소스 코드는 컴파일시에 컴파일 되지 않고 pch 의 결과물을 가져다 사용하게 되는 것이다...