원래 질문에 대한 대답은/Yc 또는/Yu가 설정되지 않은 파일에서 #pragma hdrstop을 사용하는 것이 무시된다는 것입니다. 따라서 미리 컴파일 된 헤더 및 기타 빌드없이 빌드 구성을 설정할 수 있습니다 미리 컴파일 된 헤더를 사용하여 빌드하는 구성을 빌드하고 코드 나 헤더를 변경하지 않아도됩니다.
세부 정보 ...
MSDN의 노트에 따르면 "hdrstop pragma를 사용하면 컴파일 된 상태의 파일 이름과 컴파일 상태가 저장되는 위치를 제어 할 수 있습니다." 그것은 사실입니다. 그러나 그것이 얼마나 유용한 지 정확히 명확하지는 않습니다. ...
간단히 말하면.
- #pragma hdrstop을/Yc 또는/Yu로 컴파일되지 않은 소스 파일에 두는 것은 전혀 영향을 미치지 않습니다.
- 파일에/Yu가 설정된 경우 hdrstop은 hdrstop이 나타나는 줄 앞에 모든 것을 버리고 컴파일러에 미리 컴파일 된 헤더를 삽입하도록 컴파일러에 지시합니다.
- 파일에/Yc가 설정된 경우 hdrstop은 hdrstop이 미리 컴파일 된 헤더로 나타나는 행까지 모든 파일에 대해 컴파일 된 상태를 모두 저장한다는 의미입니다.
트릭은 선택적인 헤더 파일 이름없이/Yc 및/Yu를 사용합니다. 'use'또는 'create'라디오 버튼을 체크하고 '헤더를 통해'입력란을 비워 두거나 프로젝트 파일을 편집하십시오.
그래서 미리 컴파일 된 헤더에 포함하고 포함 파일 목록의 끝에 #pragma hdrstop이있는 헤더를 포함하는 PrecompiledHeader.cpp라는 파일이 하나 있습니다. 이 하나의 파일은/Yc로 컴파일됩니다.
그런 다음 프리 컴파일 된 헤더에있는 포함 파일 다음에 #pragma hdrstop을 사용하여 다른 모든 cpp 파일을 갖게됩니다. 이 파일들은 모두/Yu로 컴파일됩니다.
이렇게하면 단일 pch 파일과이 단일 pch 파일을 사용하는 다른 모든 파일을 빌드하는 PrecompiledHeader.cpp가 생성됩니다.
이렇게하면 파일 중 NONE에 '전역'미리 컴파일 된 헤더 작성 헤더 파일이 포함되어야하므로 stdafx.h 등이 필요하지 않습니다. 즉, 모든 #pragma hdrstop 행이 무시되는 미리 컴파일 된 헤더없이 빌드되는 빌드 구성을 설정할 수 있습니다.
"좋은"이유는 신속하게 (단일 헤더를 변경하고 다시 작성하도록 강요 할 수있는) 단일 "no precomp"빌드 구성과 다른 "정상"구성을 가질 수 있다는 것을 의미하기 때문입니다 DO는 미리 컴파일 된 헤더를 사용합니다.
감사합니다. 고마워요! ... 이제, 흠 ... * "미리 컴파일 된 헤더에있는 포함 파일 다음에 #pragma hdrstop을 사용하여 다른 모든 cpp 파일을 갖게됩니다."* - 이것은 다른 파일이 그 파일의 내용을 알아야한다는 것을 의미합니까? 사전 컴파일 된 헤더를 사용하여 hdrstop 행 전후에 포함을 분할 할 수 있습니까? –
그렇게하면 더 잘 작동합니다. 그러나 당신은 할 필요가 없습니다. 프리 컴파일 된 헤더에없는 #pragma hdrstop 위에있는 파일을 가지고 있다면 precomp 빌드에서 빌드 오류가 발생합니다. 그런 다음 사전 컴파일에 있어야하는지 여부를 널리 알기 위해 널리 사용되는지 여부를 결정할 수 있습니다. –