2014-01-31 1 views
2

많은 소스 코드 호스팅 사이트에서 일부 C++ 프로젝트 (크기는 크지 만 많지는 않음)를 보았습니다. 일부 소스 파일과 헤더에는 필수 항목이 포함되어 있지 않습니다. 헤더 (프로그래머의 클래스) 또는 표준 것들 (벡터, 문자열), 심지어 완벽하게 컴파일합니다.일부 C++ 소스가 프로젝트에서 필수 헤더없이 완벽하게 컴파일됩니다.

이들 프로젝트 중 하나는 Ogitor (Ogre Scene Editor)입니다. 원본을보고 일부 필수 헤더 파일을 포함하고 있지 않습니다. 클래스 정의 만 표시하고 일부 소수점 클래스 선언 만 표시됩니다. 변경하지 않습니다. 그리고 너무 완벽하게 컴파일!.

C/C++ 개발자가이 방법을 얻는 방법에 대한 접근 방법을 원한다. #include 지시어를 많이 사용하고 싶지 않고 불완전한 클래스 정의 오류도 들었다. "미리 컴파일 된 헤더 "는이 일을합니다.

+2

, 그것은 왜냐하면 이미 포함 포함 _does_ 헤더 그것은 _didn't_ 포함하는 것. – refi64

답변

1

미리 컴파일 된 헤더는 미리 컴파일되어 컴파일 시간을 단축하기위한 것입니다. 그것들은 다른 헤더를 포함 할 필요는 없지만 그렇게하면 미리 컴파일 된 헤더를 포함하는 파일에 포함을 건너 뛸 수 있습니다.

모든 필수 헤더가 사용되는 모든 파일에 포함되는 것을 보지 못하는 이유는 다른 헤더를 통해 간접적으로 포함되기 때문입니다. 미리 컴파일 된 헤더를 사용하는지 여부에 관계없이 컴파일 단위에서 헤더 파일에 액세스 할 수있는 다른 방법은 없습니다.

예 :

header1.h

#include <vector> 
#include <string>  

header2.h

#include "header1.h" 
#include <array> 

header3.h 보통

#include "header2.h" 

std::vector<std::string> from_header1; 
std::array<int> from_header2; 
+0

글쎄, 나는이 convincent 및 가장 논리적 인, 어쨌든 나는 컴파일하는 동안 "중복 된 변수와 이름"오류를 얻지 않기를 바란다고 생각한다. 감사. –