Sunday, March 30, 2014

[Trouble Shooting] C 재정의 오류, 헤더파일 중복 방지, #if~#endif, #pragma once

Problem.

  • C에서 프로그래밍을 하다가 헤더파일을 중복으로 include 한 경우, 컴파일時 '재정의' 오류가 발생한다.



Solution.

  • 헤더파일에 맨 위에 아래의 명령어를 추가하여 헤더파일이 중복으로 컴파일되는 것을 방지한다.


1) #ifndef ~ #endif

Example.
#ifndef MY_HEADER_H   // MY_HEADER_H가 선언되어 있지 않으면

#define MY_HEADER_H  // '여기부터 #endif 이전 라인까지 포함시켜라'는 전처리 지시어.
//..code..

#endif




2) #pragma once

단 한번만 처리를 하고, 다음부터는 같은 파일의 경우 컴파일러가 헤더 파일을 열지도 않는다.
컴파일 속도는 빨라지나, 일부 컴파일러에서는 지원이 안 될 수도 있으므로 안정성과 범용성 측면에 있어서는 #ifndef ~ #endif를 사용하는 것을 추천함.





No comments:

Post a Comment