티스토리 뷰

간단한 내용이지만, 짧게 정리하고 가겠습니다.

#ifndef~#define~#endif 조합을 통해서 중복 include를 막는 것을 선호하는 사람이 있고,
#pragma once를 선호하는 사람이 있습니다.

간단히 결론부터 말하자면 둘은 거의 같은 내용이지만 #ifndef의 경우 매번 파일을 읽고 비교를 하는 반면, 후자의 경우는 컴파일러의 프리프로세서에서 한 번만 읽고 처리를 하기 때문에 더 효율적일 수 있습니다.

다만 후자의 경우 #pragma 까지는 표준으로 논의 된 사항이지만 뒤에 따르는 것에 대해서는 오로지 3가지의 표준만 정해졌을 뿐 once등과 같은 표준으로 정의된 사항은 아닙니다.

참고로 표준으로는 아래 사항이 있습니다.
#pragma STDC FP_CONTRACT on-off
#pragma STDC FENV_ACCESS on-off
#pragma STDC CX_LIMITED_RANGE on-off

on-off := ON | OFF | DEFAULT

컴파일 속도면에서 #pragma once를 사용하는 것이 다소 유리할 수 있으나 큰 차이로 보기 어렵고, 이식성을 감안한다면 전자와 같은 형태를 저는 개인적으로 선호하고 싶습니다. 물론 이식가능성이 제로에 가깝다면 논외겠지만 말입니다.

선택은 여러분의 몫입니다.
저작자 표시
신고
댓글
댓글쓰기 폼