본문 바로가기
C & C++/C & C++

stdafx.h

by izen8 2009. 12. 18.
반응형
Precompiled Header file 이란 말 그대로 미리 컴파일된 헤더파일을 말합니다.

보통 C 프로그램에서는 표준 라이브러리 함수들을 사용하기 위해서
함수들에 대한 호출정보등을 담아놓은 헤더파일을 프로그램 선두에
인클루드 하죠. 그런데 이런 표준 헤더 파일들의 경우 내용이 바뀌는 경우가
없지만 소스파일을 재컴파일할 때 마다 덩달아 재컴파일이 됩니다.

보통 간단한 프로그램의 경우는 헤더파일을 재컴파일한다고
해서 특별히 손해 볼 것도 없지만 프로그램들이 덩치가 커지면
자연히 헤더파일들도 늘어나고 헤더파일에 있는 내용들도
만만치 않게 양이 많아 집니다. 그런데 소스 한줄 고치고 커다란
소스 파일을 재검파일 하는 것도 억울한데, 전혀 변화된 부분이 없는
헤더 파일도 덩달아 재컴파일하느라고 컴파일 시간이 많이 걸리면
상당히 억울하죠.

그래서 VC++ 같은 컴파일러는 특별한 방법으로 헤더파일을 지정하면
미리 한번만 컴파일해놓고 소스를 재컴파일 할때 덩달아 재컴파일 하는 일이
없도록 해서 컴파일 시간을 줄여주는 기능이 있습니다.

보통 VC++ 에서는 재컴파일을 원하지 않는 해더파일들은 stdafx.h 에 인클루드
해놓고 각소스에는 대신 stdafx.h 를 인클루드 합니다.
이렇게 하면 컴파일러가 알아서 stdafx.h 파일을 통해서 인클루드된 헤더파일들은
한번만 미리 컴파일 해두고 다시 재컴파일 하지 않습니다.

그런데 이러한 설정은 수동으로 프로젝트 옵션해서 해줄 수도 있지만,
자동으로 기본적인 소스까지 생성해주는 방식으로
프로젝트 만들 경우 이러한 설정이 자동으로 이루어지고
헤더파일 내에 Precompiled Header File 임을 명시하기 위해서
헤더파일 소스 선두에 아래 처럼 특별한 지시문을 추가 해놓습니다.

#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_

이게 바로 precompiled header directive 입니다.

즉, 에러 메시지의 의미는 Precompiled Header file을 사용한다고 옵션에
설정이 되었는데, Precompiled Header file로 기대되는
stdafx.h 같은 파일에 precompiled header directive 없다는 얘기입니다
반응형

'C & C++ > C & C++' 카테고리의 다른 글

문장에서 문자수 계산하는 프로그램  (0) 2009.12.18
string.h에 있는 함수들에 대한 설명  (0) 2009.12.18
(교재) C 예제들  (0) 2009.10.31
(교재) 열혈강의 C  (0) 2009.10.31
(완료) 계산기  (0) 2009.10.31

댓글