10

MSDN의 설명서를 읽었지 만 결국에는 그 둘 사이의 실질적인 차이점이 무엇인지 명확하지 않습니다. 두 파일 모두 stdafx.h가 모든 * .cpp 파일의 맨 위에 추가되어야합니다.Visual Studio에서 "미리 컴파일 된 헤더 만들기"(/ Yc)와 "미리 컴파일 된 헤더 사용"(/ Yu)의 차이점은 무엇입니까?

저는 VS2008을 사용하고 있습니다.

누구나 명확한 정보를 얻을 수 있습니까?

+0

문서에 대한 링크가 관련이있을 수를 '만들기'하는 값을 설정합니다. 평범하지 않은 대답은 다음과 같습니다. * 하나는 ** 미리 컴파일 된 헤더를 만드는 데 사용됩니다. ** 다른 하나는 ** 사용합니다 (즉, 컴파일러가 일반 헤더를 읽고 미리 컴파일 된 헤더를 생성하고 다른 헤더를 생성합니다 컴파일러가 미리 컴파일 된 헤더를 생성하지 않고 사용하는 것입니다. –

답변

11

글쎄, 먼저 미리 컴파일 된 헤더의 목적을 이해해야한다고 생각합니다. 대규모 프로젝트에서는 예를 들어 단일 클라이언트 확장에서 요구하는 모든 헤더를 처리하는 데 시간이 오래 걸릴 수 있으므로 일부 사람들은 .pch 파일을 라이브러리와 함께 배포하는 것을 선호합니다. .pch 파일을 생성하려면 /Yc 컴파일러 플래그를 사용하고 라이브러리를 사용하려는 사용자는 /Yu 플래그를 설정합니다. 자세한 내용은 herehere을 참조하십시오.

Visual Studio에서 PCH 파일을 사용하는 방법에
+0

라이브러리에서 PCH 파일을 가져 오지 말아야합니다. 대부분의 코드는 여러 라이브러리를 사용하지만 컴파일러는 하나의 PCH 만 읽을 수 있습니다. 라이브러리 개발 중에 사용 된 헤더는 아마도 소비자 코드에서 필요한 헤더와 상당히 다를 수 있습니다. –

+0

@BenVoigt 실제로 이것은 일반적인 방법이 아닙니다.이 코드는 코드 기반이 거대하고 클라이언트 확장 기능은이 회사가 제공 한 것에서부터 파생 된 것입니다.이 대답이 개선되어야한다고 생각하면 편집을 제안하십시오. –

21

짧은 요약 :

  • 프로젝트의 모든 CPP 파일 stdafx.h을 포함해야
  • 선택 프로젝트 (당신은 당신이 원하는 경우 다른 것으로 변경할 수 있습니다) 솔루션 탐색기 및 Properties -> C++ -> Precompiled Headers에서 '미리 컴파일 된 헤더 만들기/사용'을 '사용'으로 설정하십시오. 속성 페이지는 여전히 솔루션 탐색기에서 stdafx.cpp 선택 도시되어 있지만
  • 을 적용 때려
+2

+1 분명하고 간단하며 핵심 대답. – CodeAngry