컴파일시에 C++의 #include는 해당 헤더의 내용이 복사되어 들어오게 된다. 이 때, 같은 내용의 헤더가 두 번 이상 복사될 수 있는데, 이것을 막아주는 게 #pragma once와 #ifndef ~ #endif이다. 차이점은 다음과 같다. #pragma once는 컴파일 동안 단 한 번만 처리를 하므로 더 빠른 컴파일이 가능해진다. 단, 일부 구형 컴파일러에서는 지원이 안 되는 경우도 있다. #ifndef는 if not defined의 약자이다. 정의하지 않았다면 #define 부터 #endif 까지의 코드를 include 한다. #ifndef EXAMPLE_H #define EXAMPLE_H #endif