C,原型中函数的多重定义

时间:2013-12-10 13:06:33

标签: c function definition prototyping

Eclipse告诉我,我有一个函数的mutliple定义。 我只是无法发现错误。 这是我的主要文件。

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


int main(){

    kontakt_hinzufuegen();

    return 0;
}

这是标题:

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

int kontakt_hinzufuegen();


#endif /* KONTAKTVERZEICHNIS_H_ */

这是kontaktfunktionen.c

#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;

};

我的错误在哪里?

3 个答案:

答案 0 :(得分:5)

您不应该使用#include C文件,这不是组织代码的正确方法。

您应该单独编译C文件,然后将它们链接在一起,或者使用单个编译器调用一次编译它们。

答案 1 :(得分:1)

您的错误是kontaktfunktionen.h中包含kontaktfunktionen.c的错误。这将包括kontaktfunktionen.c中使用kontaktfunktionen.c时已声明的所有定义和声明

正如其他人所说:你不应该在头文件中包含.c个文件。

答案 2 :(得分:1)

请勿在头文件中#include添加任何内容。并在#include "kontaktverzeichnis.h"文件中执行kontaktfunktionen.c

正如@StoryTeller评论的那样,在kontakt_hinzufuegen()文件中将int kontakt_hinzufuegen()定义为kontaktfunktionen.c,并从函数int返回kontakt_hinzufuegen值,如下所示: :

#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 ;

}