2012-12-28 4 views
3

두 개의 다른 디렉토리에 두 개의 something.h가 있다고 상상해보십시오. 이러한 디렉토리에 쓸 수없고 루트 액세스 권한이 없습니다.충돌 헤더의 우선 순위를 설정하는 방법 C++

#include <something.h> 

당신은 어떻게 특정 위치에 something.h를 사용하여 지정하고 다른 사람을 무시 않습니다

당신이 수행하는 코드가? 사용

+0

붐! 20 % 증가했습니다! – madreblu

답변

1

시도 : GCC는 Search Path를 사용하여 헤더를 찾는 것을
#include "../directory/something.h"
참고.
또한 GCC에 지정된 디렉토리에서 헤더 파일을 찾도록 요청할 수 있습니다. -iquote dir을 사용하여 헤더 파일을 검색 할 디렉토리 목록의 헤드에 dir 디렉토리를 추가하십시오.

+0

내가 원하는 .h에 대한 전체 경로를 지정하는 것이 작동하지 않습니다. – madreblu

+0

'-iquote'를 사용해보십시오 – bane

+0

도 참조하십시오 : [디렉토리 옵션] (http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html) – bane

1

일반적으로 시스템 포함으로 검색 할 수있는 디렉토리 목록 (#include에 꺾쇠 괄호 사용)은 컴파일러로 -I 집합으로 제공됩니다. 종종 이러한 include 디렉토리는 makefile 또는 프로젝트 파일에 지정됩니다.

컴파일러는 모두 포함 디렉토리로 나열된 디렉토리의 순서를 따르므로 makefile에서 해당 순서를 변경하여 기본 설정을 선택할 수 있어야합니다. 그러나 일부 컴파일러에서는 일부 디렉토리가 항상 포함 된 것으로 간주되기 때문에 어려울 수 있습니다 (gcc는 기본적으로 사용자가 /usr/include을 포함한다고 가정합니다). 즉, 이것은 매우 구현에 따라 다릅니다.

꺾쇠 괄호는 아니지만 큰 따옴표를 사용하는 경우 원하는 파일을 직접 #include "dir/file.h"과 같이 지정할 수 있습니다.

+0

하나의 버전은/usr/include/foo /에 있습니다. .. 다른 하나는 내 홈 디렉토리에 있습니다. '#include "풀 패스를 홈 디렉토리 헤더" "로 지정할 때, 여전히/usr/include를 선택합니다. – madreblu

+0

@madreblu'-I' 옵션을 사용해 보셨습니까? –

+0

예, 심지어 -I를 사용하는 경우에도/usr/include/foo/one을 찾습니다. – madreblu

관련 문제