C++ 프로그래밍을 하면서 성가신 작업중 하나는
헤더파일이 꼬여서 해결하는 작업이다.
별거 아닌것 같지만, 이거 때문에 시간을 왕창 잡아먹는 경우도 생기는데..
C#에서는 헤더파일 자체가 없어져 버렸기 때문에
적어도 꼬일 걱정은 안하게 되었다.
암튼, C++에서 헤더 중복방지를 위해 하는 방법은 크게 2가지 정도 있는데
하나는 #pragma once키워드와 #define을 이용하는 방법이다.
The use of #pragma once can reduce build times as the compiler will not open and read the file after the first #include of the file in the translation unit.
#pragma once 는 컴파일러에게 더이상 중복해서 같은 파일을 읽지 말라고 알려주는
방법이다.
반면 #include guard idiom 은 호환성을 타지 않아, 안전한 방법이다.
단점이라고 하면 매번 헤더파일을 열어서 확인을 해야하므로 전자보다는
빌드가 느리다.
사실 VS 2013,2015 같은 최신 컴파일러를 사용할 경우 #pragma once 를 사용해도
별 문제는 없다.
VC++ 5.0 이상이면 충분하다고 들었다.
하지만, 호환성이나 기타 알 수 없는 환경에서는 안전한 방법을 사용하라고
지침에도 나와있다.
There is no advantage to use of both the #include guard idiom and #pragma once in the same file.
또한 2개를 동시에 사용한다고 해도 이득은 없으니, 한개만 사용하도록 하자
https://msdn.microsoft.com/en-us/library/4141z1cx.aspx
'프로그래밍 > C++' 카테고리의 다른 글
Visual C++ 데이터 형식(범위) (0) | 2016.01.29 |
---|---|
매크로(define) 재정의 충돌문제 해결 (0) | 2016.01.26 |
C++11 enum class (0) | 2016.01.21 |
객체지향 - 인터페이스와 구현의 분리 (0) | 2015.11.30 |
FreeImage 라이브러리 (0) | 2015.10.11 |