2015-01-15 2 views
3

는 다음 소스 파일을 상상해stdafx.h를 포함하는 가장 좋은 방법은 1 개의 디렉토리 일 때입니까?

src/StdAfx.h 
src/moresrc/MyFile.cpp 

MyFile.cpp에서, 내가 미리 컴파일 된 헤더 파일 StdAfx.h 함께 포함해야합니다.

나는이 할 경우

warning C4627: '#include "../stdafx.h"': skipped when looking for precompiled header use 
fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? 

그래서 문제가 해결되지 않습니다

#include "../StdAfx.h" 

그때 내가 컴파일러 오류가 발생합니다. 난 그냥

#include "StdAfx.h" 

을 할 경우 그 올바르게 컴파일,하지만 성가신 오류는 다음과 같습니다 비주얼 스튜디오 2013에서 강조 얻을 : 내가 말했듯이

error highlighting

그래서,이 컴파일 하지만 그것은 성가신 일입니다.

"StdAfx.h"를 밑줄없이 포함 할 수는 있지만 컴파일 할 수 있습니까?

+0

Microsoft에 버그 리포트를 제출 하시겠습니까? ;) – Borgleader

+0

프리 컴파일 헤더를 사용하지 말고 프로젝트에서 stdafx.h를 제거하는 것이 좋습니다. 거대한 프로젝트가 없다면 미리 컴파일 된 헤더의 시간 절약으로 인해 발생하는 문제와 같은 번거 로움보다 중요하지 않습니다. –

+0

프리 컴파일 된 헤더는 시간을 절약하기로되어 있지만 헤더 중 하나가 변경되면 사전 컴파일 프로세스를 수행해야합니다. 아이디어는 안정적인 헤더를 "미리 컴파일 된"섹션에 배치하고 휘발성 파티션은 외부에 배치하는 것입니다. –

답변

3

$(ProjectDir) (프로젝트 루트 디렉토리)을 프로젝트 옵션 (C++ -> 일반 -> 추가 포함 디렉토리)의 디렉토리 목록에 추가 할 수 있습니다. 그런 다음 include에 프로젝트 루트와 관련된 경로를 지정할 수 있습니다. 예를 들어 utils/a.h이 있고 foo/bar/b.h에서 사용하려는 경우 #include "../../utils/a.h" 대신 #include "utils/a.h"을 쓸 수 있습니다. 프로젝트 루트에 stdafx.h이 있으면 #include "stdafx.h"과 함께 포함 할 수 있습니다.