2012-07-19 6 views
2

나는 여기에서이 질문을 보았다 : How do I use extern to share variables between source files? 설명서를 따랐다.extern 선언 및 헤더 파일 C

가 ------ 확인 :하지만 여전히 나는 는 그런 일이 왜 어떤 도움과 설명을 얻을 싶어요 링커 오류 ... ..

나는 2 개가 .c 파일과 하나 개의 헤더 파일을 얻을. H ----

#ifndef check 
#define check 

extern int num; 

#endif 

---- ---- check.c

#include "check.h" 
    #include <stdio.h> 



    int func(int x, int y) 
    { 
int z = x+y; 
return z; 
    } 
    void printnum() 
    { 
num++; 
printf("%d",num); 
    } 

---- ---- ynnynyny.c

01,234,

내가 이러한 오류가 계속 :

1> ynnyny.c 
1> check.c 
1> Generating Code... 
1>ynnyny.obj : error LNK2005: _func already defined in check.obj 
1>ynnyny.obj : error LNK2005: _printnum already defined in check.obj 

내가 #ifndef 물건 또한 통근 선언을 썼다, 그래서 뭐가 문제인가?

감사합니다.

답변

6

ynnynyny.c에 "check.c"가 포함되어 있지 않습니다.

+4

더 많은 점을 말하자면 어떤 C 파일도 절대 포함하지 마십시오! –

+2

또한 파일의 이름을 ynnynyny.c로 지정하지 마십시오. – Shahbaz

+0

@KevinVermeer, 특히 동의하고 싶습니다. 특히 초보자 인 경우. 나는 실제로 매우 특별한 상황에서 .c 파일을 포함 시켰습니다. (주로 그 방법을 적용한 다른 파일에 .c를 "포장"하고 싶을 때). 그러나 컴파일러가 내부 .c 파일과 외부 .c 파일을 모두 컴파일하지 않도록해야합니다. –