2011-10-04 6 views
3

#include "foo.h"을 쓸 때 컴파일러는 먼저 현재 디렉토리와는 달리 포함하고있는 파일의 디렉토리를 확인하고 거기에없는 경우에는 #include <foo.h>의 경우와 같이 경로 목록헤더 파일 찾기에 대한 규칙

절대 경로가 지정되지 않은 경우 #include "/foo.h" 인 경우 절대 경로 만 확인해야합니다.

규칙이 다른 C 컴파일러가 있습니까?

+0

gcc를 사용하고 있지만 나열된 규칙은 동일합니다 ..! 나는 그러한 파일을 포함하는 것이 C 언어 자료의 일부라고 생각하지 않습니까? –

+1

이상하게도, 언어 사양에 정의 된 구현이라고되어 ​​있습니다. 그래서 어떤 구현이 그렇지 않은지 확인하고 싶습니다. – rwallace

+1

오, 그때 당신에게 +1 ... 어떤 다른 방법으로 몇 가지 크로스 컴파일 도구 체인 수 있습니다 .. !! o/w gcc, 썬 스튜디오, 비주얼 스튜디오, 터보 컴파일러 모두이 규칙을 따릅니다. –

답변

3

커니 핸 & 리치 기록 :

먼저 원본 소스 파일과 관련하여 (a 의도적 구현에 의존 구문)에서 검색하고, 그 검색은 마찬가지로 다음, 실패한 경우

[ "foo에"#INCLUDE] 첫 번째 양식.

즉, 따옴표에 대한 검색 전략을 전제로하지 마십시오. 그러나 필자가 실행 한 모든 컴파일러는 포함 파일의 경로에서 먼저 검색하고 찾지 못하면 컴파일러의 검색 경로로 넘어가는 작업을 공유합니다.