2014-12-31 2 views
0

저는 C로 프로그램을 작성 중이며 다른 모듈로 빌드해야합니다.다른 헤더를 사용하여 데이터 구조를 공유하십시오.

모듈의 헤더 파일 중 하나에서 링크 된 목록을 만들기 위해 데이터 구조를 정의했습니다.

이 헤더 파일을 다른 모듈에 포함 시키면 내 프로그램이 컴파일되지 않습니다.

내 구조체 정의는 다음과 같습니다

typedef struct node 
{ 
    char bla[10]; 
    int num; 
    struct node* next; 
}Name; 

나는이를 구현하기위한 적절한 방법이 무엇인지 궁금합니다. 감사합니다.

+4

컴파일러에서 어떤 오류가 있습니까? – pat

답변

0

다른 헤더에서는 단순히 전달 선언을 사용하십시오. 중복 정의를 작성하므로 정의 할 필요가 없습니다. 링커는 실제 정의에서 연결을 처리합니다. 당신이 주어진 구조는 헤더 A를 정의했다면

그래서, 헤더 B에서 사용하기 위해, 당신은 다음에 당신을 허용 할 헤더

struct node; 
    typedef struct node Name; 

의 상단에 다음 줄을 둘 것 해당 헤더의 함수 선언에서 선언을 사용하십시오.

실제로 헤더 파일에 함수 정의를 넣으려는 경우 파일이 재귀 적으로 포함되지 않도록 Pre-Processor 매크로를 사용해야합니다.

당신이 main.c 모두 a.hb.h을 포함하더라도, a.h, 당신은

#ifndef __A 
    #define __A 
    #include "b.h" 
    ... 

    #endif 

을 둘 것입니다 그리고 b.h 당신이 그런

#ifndef __B 
#define __B 

    ... 

#endif 

을 넣어 것 없을 것 재귀 적 포함 및 컴파일 성공합니다.

이상적으로 헤더는 구조/유형 정의와 함수 선언으로 제한되므로 앞으로 선언이 모두 필요합니다.

관련 문제