본문 바로가기
dev, tech

헤더 파일 찾는 알고리즘

by 구띵 2010. 11. 8.
Q 10.8b
헤더 파일을 찾는 알고리즘을 알고 싶어요.
Answer
정확한 알고리즘은 구현 방법에 따라 다릅니다 (implementation-defined). (즉, 이 방법에 대해 문서화되어 있을 가능성이 높습니다. 질문 [*]11.33을 참고하기 바랍니다).

일반적으로 <> 형식으로 포함된 헤더 파일들은 하나 이상의 표준으로 지정된 디렉토리에서 찾게 됩니다. (게다가, <>로 포함한 헤더들은 꼭 파일 형식으로 저장되어 있을 필요도 없습니다.) "" 형식으로 포함된 헤더 파일은 우선 ``현재 디렉토리''에서 찾은 다음, 없을 경우, 표준으로 지정된 디렉토리에서 찾게 됩니다.

전형적으로 (특히 UNIX 컴파일러), 현재 디렉토리란 #include 를 쓴 파일이 있는 디렉토리를 말합니다. 다른 컴파일러에서는 현재 디렉토리가 컴파일러가 실행된 그 디렉토리를 의미하기도 합니다. (물론, ``현재 디렉토리''라는 개념이 없는 시스템이나, 디렉토리 자체가 없는 시스템에서는 다른 규칙이 있을 것입니다)

일반적으로, 시스템 헤더 파일이 위치할 디렉토리 목록에 사용자가 원하는 디렉토리를 추가할 수 있는 방법이 (보통 컴파일러를 실행할 때 command-line option `I'를 쓰거나, 환경 변수를 지정하는 방법으로) 제공됩니다. 좀 더 자세한 것은 컴파일러의 매뉴얼을 참고하기 바랍니다.

References
[K&R2] § A12.4 p. 231 
[ANSI] § 3.8.2 
[C89] § 6.8.2 
[H&S] § 3.4 p. 55


Q 10.8a
#include <>와 #include ""에 차이가 있나요?
Answer
<> 형식은 헤더 파일이 시스템에서 제공한 것이거나 표준 헤더 파일일 경우에 사용하며, ""는 프로그래머가 제작한 헤더 파일에 사용합니다.
Note
아래 질문 [*]10.8b를 참고하기 바랍니다.

'dev, tech' 카테고리의 다른 글

volatile 키워드  (0) 2010.10.01
컴파일러 구조  (0) 2010.02.02
예약어 FAR  (0) 2009.12.18
자료형 최대값, 최소값  (0) 2009.12.17
static을 이해하자  (0) 2009.12.15

댓글