다음과 같이 내 문제를 보여주는 장난감 코드는 다음과 같습니다오류에게 "여러 정의"에 대한 해결 방법이 필요
stuff.h :
#ifndef STUFF
#define STUFF
int a;
int testarr[]={1,2,3};
#endif
fcn.h :
#include "stuff.h"
int b[]={5,6,7};
void fcn();
주를 .h :
#include "stuff.h"
#include <stdio.h>
fcn.c :
#include "main.h"
void fcn() {
printf("Hello\n");
}
는 main.c를 :
#include "main.h"
#include "fcn.h"
int main() {
fcn();
printf("HI\n");
}
컴파일 시도가 실패합니다
는/g/pe_19976/fcn_2.o:(.data+0x40): multiple definition of `testarr'
/g/pe_19976/main_1.o:(.data+0x40): first defined here
약간의 독서를하고 후에, 나는 헤더 파일에 배열 testarr
을 정의하는 것은입니다 실현 문제. 하지만 실제 코드에서는 여러 파일이 testarr
에 액세스해야하며 모든 곳에 동일한 값이 할당되어 있어야합니다. 나는 그것을 main.h
(?)에 넣을 수 있다고 생각하지만, 실제로 작동한다면 내 실제 코드에서는 논리적으로 stuff.h
에 속한다. 이 수수께끼를 어떻게 해결할 수 있습니까?
다른 말로하면, testarr
을 extern
으로 정의하려고 시도했지만 동일한 문제가 발생했습니다.