Define variables in header

Define variables in header

Header file에 variable을 define하는 것은 최대한 피해야 하지만 어쩔 수 없을 때가 있다.

각 source파일들을 컴파일 할 때에는 에러가 나지 않지만 여러개의 object file을 합칠 때에는 중복선언에 의한 error가 날 수 있다.

이것을 피하기 위해서는

이와 같이 하면 된다.

 

ps.

이와 같은 트릭을 사용할 경우에 헤더파일을 다른 헤더피일 안에 include할 때 특별히 주의해야 한다.

예를 들어,

이렇게 되면, trick.h는 wrap.h가 include될 때, 즉 DEFINE_GLOBALS가 선언되기 이전에 include되므로, 결과적으로 int var가 선언되지 않게 된다.
그렇다고 만약 wrap.h 안에서 DEFINE_GLOBALS를 선언하게 된다면 wrap.h가 포함되는 모든 object file들에 의해 duplicated statement에러가 나게 될 것이다.
따라서 가능하면 #define DEFINE_GLOBALS를 trick1.c 가장 위에 선언하여 이러한 문제를 피해가는 것이 가장 간단한 것 같다.

Leave a Reply