2010-02-04 3 views
1

C 언어로 된 extern 구조체 방법. 그래서 나는 다른 구조체에 사용할 수 있습니다.Extern 구조체 논리

+0

LPPoniter 란 무엇입니까? 'b'에서 "extern structure"에 대한 포인터를 원합니까? 아니면'b에'extern 구조체의 실제 멤버를 원합니까? –

+0

LP 긴 포인터를 의미합니다. – Siddiqui

+1

? ͏͏͏͏͏͏͏͏͏͏͏͏͏͏ – kennytm

답변

9

b가 다른 소스 파일이라고 가정합니다. 할 수 있습니다 그래서 같은 :

파일 : file.h

#ifndef _FILE_H_ 
#define _FILE_H_ 
struct emp { 
char name[100]; 
}; 
#endif 

파일 : A.C

#include "file.h"  
extern struct emp e; // declare struct var as extern. 

int main() { 

     printf("Name = %s\n",e.name); 

     return 0; 
} 

파일 : b.c 실행에

#include "file.h"  
struct emp e = {"stackoverflow"}; // struct var defined here. 

:

$ gcc *.c && ./a.out 
Name = stackoverflow 

매우 불분명하고 은 신품이 아닙니다.에 있습니다.

+0

첫 번째 답변을 많이 주셔서 감사합니다. 그리고 나는 나의 가난한 영어 때문에 나의 질문을 명확하게 기술 할 수 없다는 것을 인정한다. 코드를 사용해 보았지만 file.h를 두 개의 개별 파일에 포함 시키면 컴파일러 emp의 다중 감속 오류가 발생합니다. – Siddiqui

+6

당신은 FILE_H #ifndef file.h – richo

+0

약 #endif // 이는 #DEFINE FILE_H [file.h의 내용을] 같은 뭔가가 필요 오늘 마지막 upvote에있다, 그러나 당신이 Richo의 제안을해야합니다. @ 리코, 그 용어는 "가드 포함"입니다. –

0

Extern 구조체는 적어도 extern이 헤더 파일에 있고 실제 구조체가 해당 헤더를 포함하는 cpp 파일에있을 때 extern과 함께 작동합니다. 나는 "extern struct"가 단지 "extern"만큼 필요하다고 생각하지 않는다.