read
#include <aaa.h> #include "aaa.h"
위 두 줄의 차이점은 무엇일까? 보통 <> 은 standard library header 에 사용하고 "" 은 user defined header 사용한다고 알려져 있다. 관용적으로 그렇게 쓰다보니 크게 틀린 말은 아니지만 정확한 이해는 다음과 같다.
먼저 <> 로 되어 있는 include 문은 컴파일러 구현체에 따라 정의된 곳에서 header 를 찾아 그 내용을 가지고 온다. 이때 헤더를 가르키는 문자열은 유일해야 한다. 이 헤더가 가르키는 것이 꼭 파일일 필요도 없다.
다음 "" 로 되어 있는 include 문은 컴파일러 구현체에 따라 정의된 곳에서 해당 파일을 찾아 그 내용을 가지고 온다. 만약 파일을 찾지 못하면, "" 를 <> 로 바꿔 위에서 얘기한 replacement 를 다시 진행한다.
그러니까 둘의 차이점은 header 를 읽을 것인가 아니면 source file 을 읽을 것인가라고 생각하면 된다. standard header 들이 꼭 파일로 존재하지 않고 compiler 에 built-in 으로 들어가 있을 수도 있다는 점을 생각해보면 쉽게 이 차이가 이해될 것이다.