#include, #import, #pragma once

Dev/C / C++ 2011. 9. 28. 15:25
프로그래밍을 좀 하다 보면 위 3개를 자주 보았을 것이다. (#import는 못봤을지도..)

회사에서 일 좀 하다가 이 3개의 차이점이 궁금해서 여기 저기 찾아본 결과를 적어보기로 했다.

*. #include <filename> or #include "filename"
해당 파일 내용을 추가시킬 때 쓴다. 보통 프로그래밍 하면 헤더파일(~.h)를 추가하게 된다.
위에서 언급했던 #import, #pragma once랑 연결해서 이야기를 하자면, #include는 무조건 해당파일 내용을 추가하게 된다.
그래서 중복 선언으로 인한 오류를 해결하기 위해서 헤더파일의 시작과 끝을 #ifndef, #endif로 감싸는 방법이 주로 이용된다.

*. #import <filename>
 #import도 #include와 같은 역할을 하는데, #include와 다르게 #import는 한번만 그 파일의 내용을 추가시켜준다. 그래서 따로 헤더파일에 #ifndef, #endif를 써줄 필요가 없다. #import를 쓰면 무조건 한번만 추가 되게 되는 것이다. 그 다음에 같은 파일을 #import하는 구문을 만나게 된다면 무시하게 된다.

*. #pragma once
 이 녀석은 위의 2개와 다르게 컴파일러 지시어이다. #pragma 까지는 표준이므로 문제가 없는데, 그 뒤에 오는 값들이 컴파일러마다 다르게 되어 있어서 다른 컴파일러로 빌드할 때 문제가 될 수 있다. 자신이 하는 업무에 맞게 고려해서 써야될 필요가 있다. 참고로 [#pragma once]는 gcc, visual studio에서 지원을 하고 있다.
 
: