최근에 G ++로 프로그램을 만들어야하는 수업 프로젝트가있었습니다.
나는 메이크 파일을 사용했고 어떤 이유로 가끔 .h.gch 파일을 남겼습니다.
때로는 이것이 컴파일에 영향을 미치지 않았지만, 종종 컴파일러가 수정되었거나 의미가없는 문제에 대해 오류를 발생시키는 결과를 낳았습니다.
두 가지 질문이 있습니다.
1) .h.gch 파일이란 무엇이며 어떤 용도로 사용됩니까? 과
2) 청소하지 않으면 왜 그런 문제가 발생합니까?
최근에 G ++로 프로그램을 만들어야하는 수업 프로젝트가있었습니다.
나는 메이크 파일을 사용했고 어떤 이유로 가끔 .h.gch 파일을 남겼습니다.
때로는 이것이 컴파일에 영향을 미치지 않았지만, 종종 컴파일러가 수정되었거나 의미가없는 문제에 대해 오류를 발생시키는 결과를 낳았습니다.
두 가지 질문이 있습니다.
1) .h.gch 파일이란 무엇이며 어떤 용도로 사용됩니까? 과
2) 청소하지 않으면 왜 그런 문제가 발생합니까?
답변:
ㅏ .gch
파일은 미리 컴파일 된 헤더이다.
만약 .gch
다음을 찾을 수없는 일반적인 헤더 파일이 사용됩니다.
그러나 프로젝트가 미리 컴파일 된 헤더를 생성하도록 설정된 경우 존재하지 않는 헤더를 만들고 다음 빌드에서 사용합니다.
때때로는 *.h.gch
손상되거나 오래된 정보를 포함하므로 해당 파일을 삭제하고 다시 컴파일하면 문제가 해결됩니다.
파일에 대해 알고 싶다면 터미널에 입력하기 만하면됩니다.
file filename
file a.h.gch
제공합니다 :
GCC precompiled header (version 013) for C
.h.gch
파일에 대해 "데이터"라고 말합니다 . 이를 위해 적절한 데이터베이스 파일이 필요하다고 생각합니다.
GCC 미리 컴파일 된 헤더입니다.
Wikipedia에는 반쯤 괜찮은 설명이 있습니다. http://en.wikipedia.org/wiki/Precompiled_header
a) 미리 컴파일 된 헤더 : http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html
b) .h 파일에서 "캐시 된"정보를 포함하며 각 .h 파일을 변경할 때마다 업데이트해야합니다. 발생하지 않는 경우-프로젝트에 잘못된 종속성이 설정되어 있습니다.
다른 답변은 gch 파일이 무엇인지와 관련하여 완전히 정확합니다. 그러나 컨텍스트 (이 경우 g ++를 사용하는 초보자)가 전부입니다. 이 맥락에서 두 가지 규칙이 있습니다.
절대로 g ++ 컴파일 라인에 .h 파일을 넣지 마십시오. .cpp 파일 만. .h 파일이 실수로 컴파일 된 경우 * .gch 파일을 제거하십시오.
절대로 #include 문에 .cpp 파일을 넣지 마십시오.
규칙 1이 위반되면 어떤 시점에서 질문에 설명 된 문제가 발생합니다. 규칙 2가 깨지면 링커는 곱셈으로 정의 된 기호에 대해 불평 할 것입니다.