본문 바로가기
DevTool

include 쌍따옴표와 꺽쇠의 차이

by matters_ 2018. 7. 31.
1
2
#include <aaa.h>
#include "aaa.h"
cs

 

 두 줄의 차이점은 무엇일까? 보통 <> 은 standard library header 에 사용하고 "" 은 user defined header 사용한다고 알려져 있다. 관용적으로 그렇게 쓰다보니 크게 틀린 말은 아니지만 정확한 이해는 다음과 같다.

 

먼저 <> 로 되어 있는 include 문은 컴파일러 구현체에 따라 정의된 곳에서 header 를 찾아 그 내용을 가지고 온다. 이때 헤더를 가르키는 문자열은 유일해야 한다. 이 헤더가 가르키는 것이 꼭 파일일 필요도 없다.

 

다음 "" 로 되어 있는 include 문은 컴파일러 구현체에 따라 정의된 곳에서 해당 파일을 찾아 그 내용을 가지고 온다. 만약 파일을 찾지 못하면, "" 를 <> 로 바꿔 위에서 얘기한 replacement 를 다시 진행한다.

 

그러니까 둘의 차이점은 header 를 읽을 것인가 아니면 source file 을 읽을 것인가라고 생각하면 된다. standard header 들이 꼭 파일로 존재하지 않고 compiler 에 built-in 으로 들어가 있을 수도 있다는 점을 생각해보면 쉽게 이 차이가 이해될 것이다.

Reference


http://stackoverflow.com/questions/21593/what-is-the-difference-between-include-filename-and-include-filename

http://gsong.pe.kr/dev/2012/02/11/include-ec-9d-98-ec-8c-8d-eb-94-b0-ec-98-b4-ed-91-9c-ec-99-80-eb-b6-80-eb-93-b1-ed-98-b8-ea-b8-b0-ed-98-b8-ec-9d-98-ec-b0-a8-ec-9d-b4.html 

댓글