GCC컴파일 옵션중 헤더파일 지정하는 옵션을 사용하는 경우

이한길의 이미지

-I라는 헤더파일 지정하는 옵션이 있잖아요.
정확하게는 헤더파일의 위치를 지정하지요..

그런데 이 옵션을 사용할 경우 이 옵션이 지정하는 위치들에..
같은 이름의 헤더파일이 있다면 어느것이 include되는지 궁금하네요.
특히 GCC와 같이 제공되는 라이브러리의 헤더파일과 이름이 같을
경우는 어떻게 되지요?

혹시 우선순위가 있다면 이 우선순위는 변경할 수 없나요?

부탁드립니다.

osanha의 이미지

해보진 않았지만, 해보면 알겠지요.

생각키론, path찾아가는것도 순서대로 가듯이 순서대로 갈것같군요.
일단 gcc자체 헤더디렉토리를 가장 먼저 찾을것같고 그다음엔 -I에 기록된 순서대로 갈것같네요.

만약 c++로 개발하고 있고 그러한것이 염려된다면 namespace를 사용하시면 되겠네요.

cinsk의 이미지

GCC default directory path보다.. -I로 지정한 디렉토리를 먼저 찾습니다. -I로 지정한 디렉토리가 여러 개일 경우, 먼저 지정한 디렉토리 (왼쪽부터) 부터 찾습니다.

$ info gcc invok dir