C 언어 extern 에 대해 질문 드립니다.

poplinux의 이미지

소스를 다음과 같이 세 개로 나누었습니다.

a.c
b.c
c.c

a.c 에 전역 변수 하나를 선언해 놓은 상태입니다. 예를 들어 int g_test 라고 할 때 b.c 나 c.c 에서 g_test 를 사용하려면 extern int g_test 라고 선언하여 사용해야 합니다.

이렇게 사용하다보니 소스 크기가 커지거나 소스 갯수가 늘어날 경우엔 관리하기가 불편해 집니다. 혹시 다른 방법으로 할 수 있을까요?

체스맨의 이미지

#include 를 이용합니다.

일반적으로 필요한 extern 을 헤더파일 (.h) 안에 모아두고, 각 소스마다 그 헤더파일을 인클루드하는 방법을 씁니다.

중복 포함 방지를 위해 헤더 파일에는 대개 다음과 같은 구문을 사용합니다.

#ifndef _XXX_H
#    define _XXX_H
 
/* 헤더 파일 내용을 쓴다. */
 
#endif /* _XXX_H */

_XXX_H 는 각 헤더 파일마다 고유하게 정의되는 심볼이어야 하겠지요.

Orion Project : http://orionids.org

purestarman의 이미지

extern은 별로 좋은 표현은 못됩니다..

윗분처럼 #include를 만들어서 사용하면..

보기도 편하고 나중에 유지 보수도 조금 쉽겠죠.. ??

익명 사용자의 이미지

비슷한내용끼리 struct로 묶어서 처리하세요.
extern 갯수를 줄이는게 좋아요.