|
아무래도 전역변수는 c파일에 두는게 좋겠구요.
다른 파일에서 참조하고 싶으시면.. extern을 쓰면 될거 같아요
file1.c
-------------------
double I[100], V[100],Power[100];
double Isc, Voc, Imax, Vmax, Pmax;
...
file1.h
-------------------
extern double I[100], V[100],Power[100];
extern double Isc, Voc, Imax, Vmax, Pmax;
...
file2.c
-------------------
#include "file1.h"
...
//변수를 마음껏 사용하세요
include 라고 하는것은 header 파일을 실제로 c파일에 넣어 버리거든여. 선행처리기가 해버리는 일이지요.
그러다 보니 한 project 안에 같은 변수가 두번 선언되어서 나는 에러로 보입니다..
extern은 외부변수라고 불리는데 실제로 변수공간을 할당하는게 아니구..
"다른 어딘가에 변수의 실체가 선언되어 있다" 는 것을 컴파일러에게 알려주는 걸로 생각하심 되요.
정확한 내용은 C문법서를 참조하시구요.
우시관 님이 쓰신 글 :
: 장비 인터페이스를 하는데
: 많은 전역변수를 필요로 합니다.
: (사실은 실력이 안되서 전역변수 처리를 많이 합니다.)
:
: 전역변수를 file1.h 에 아래와 같이 정의하고...
:
: //file1.h------------------------------
: double I[100], V[100],Power[100];
: double Isc, Voc, Imax, Vmax, Pmax;
: // enf of file1.h------------------------
:
: Fomr1 에서 include 해서 쓸때는 문제가 없는데..
: Form이 하나 이상이 되어서
: 두개의 폼에서 file1.h 를 include 하면
:
: [Linker Warning] Public symbol '_a' defined in both module C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ and C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT2.OBJ
:
: 위와 같은 경고가 나옵니다.
:
: 물론 form 하나에서만 include 해서 쓰라면 어쩔수 없지만...
: 두개의 폼에서 전역변수를 사용하기 때문에 ㅜ.ㅜ....
:
: 어떻게 해야 하나요??
: 혹시 프리컴파일러를 써야 된다면???
: 제가 그쪽은 하나두 몰라서요....
|