2013-12-10 2 views
-1

이클립스에서는 함수 정의가 여러 개 있음을 알 수 있습니다. 나는 그 실수를 발견 할 수 없다. 이이 헤더입니다C에서 여러 함수 정의, 프로토 타이핑

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


int main(){ 

    kontakt_hinzufuegen(); 

    return 0; 
} 

내 main.c에있다 :

#ifndef KONTAKTVERZEICHNIS_H_ 
#define KONTAKTVERZEICHNIS_H_ 
#include "kontaktfunktionen.c" 

int kontakt_hinzufuegen(); 


#endif /* KONTAKTVERZEICHNIS_H_ */ 

이것은

#include <stdio.h> 

kontakt[]; 


kontakt_hinzufuegen(){ 
int i = 0; 
printf("Bisher sind %i Kontakte angelegt.",kontakt[i]); 

    kontakt[i++]; 

} 

struct kontaktname{ 
    char* name; 
    char* vorname; 
}; 

struct kontaktanschrift{ 
    char* strasse; 
    int hausnummer; 
    int plz; 
    char* ort; 
    char* land; 

}; 

어디에 오류가 kontaktfunktionen.c입니까?

+1

#include <stdio.h> #include "kontaktverzeichnis.h" // define the type for this array as below int kontakt[]; int kontakt_hinzufuegen(){ int i = 0; printf("Bisher sind %i Kontakte angelegt.",kontakt[i]); kontakt[i++]; // Return an int value return 0 ; } 
'그 kontakt_hinzufuegen() ''kontaktfunktionen.c'에서 리턴 타입이 없습니다. – StoryTeller

+0

당신은 왜합니까 :'#include "kontaktfunktionen.c"'. 소스 파일이 아니라 헤더가 포함됩니다. – hetepeperfan

답변

1

#include 헤더 파일에있는 내용이 없습니다. kontaktfunktionen.c 파일에서 #include "kontaktverzeichnis.h"을 수행하십시오. @StoryTeller은 주석으로

kontaktfunktionen.c 파일에 int kontakt_hinzufuegen() 같은 kontakt_hinzufuegen()을 정의하고 예 ::위한로서 기능 kontakt_hinzufuegen에서 int 값을 반환

내가 도움이되지만 알 수없는
1

kontaktfunktionen.h에는 kontaktfunktionen.c이 포함됩니다. 당신은 는 헤더 파일에 .c 파일을 포함 할 수 없습니다 : 다른 사람이 말했듯이 당신이 kontaktfunktionen.c

를 사용할 때 이미 선언 된 kontaktfunktionen.c의 모든 정의와 선언을 포함 할 것이다.

5

당신은 #include 파일이 아니기 때문에 코드를 구성하는 적절한 방법이 아닙니다.

C 파일을 별도로 컴파일 한 다음 하나의 컴파일러 호출로 모두 링크하거나 한 번에 컴파일해야합니다.