error: conflicting types for 'bef_annahme'
我定义了一个叫bef_annahme的函数,编译时一直报错,但是排查后还是不明白问题出在哪里
定义的头文件如下所示:
#ifndef FILE_BEFEHL_H_
#define FILE_BEFEHL_H_
#define Line_Max 1024
#define Anzahl_Befehle_Max 1024
int bef_annahme(int anzahl_zeile,char *zeile_inhalte[Anzahl_Befehle_Max],struct befehle *bef_kette[Anzahl_Befehle_Max]);
#endif /* FILE_BEFEHL_H_ */
下面是定义的函数:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "file_befehl.h"
#define Line_Max 1024
#define Anzahl_Befehle_Max 1024
struct befehle
{
int nr_bef;
char bef[Line_Max];
struct befehle *naechst;
struct befehle *vorne;
};
int bef_annahme(int anzahl_zeile,char *zeile_inhalte[Anzahl_Befehle_Max],struct befehle *bef_kette[Anzahl_Befehle_Max])
{
int bef_zaehler = 0;
for(int i = 0;i < anzahl_zeile;i++)
{
if(zeile_inhalte[i][0] == ';')
{
continue;
}
// bef_kette[i] = (struct befehle *)malloc(sizeof(struct befehle));
// bef_kette[i]->bef = zeile_inhalte[i];
strcpy(bef_kette[i]->bef,zeile_inhalte[i]);
strtok(bef_kette[i]->bef,";");
bef_zaehler++;
}
bef_kette[0]->vorne = bef_kette[0];
bef_kette[0]->naechst = bef_kette[1];
bef_kette[bef_zaehler-1]->naechst = NULL;
bef_kette[bef_zaehler-1]->vorne = bef_kette[bef_zaehler-2];
bef_kette[bef_zaehler-1]->nr_bef = bef_zaehler;
for(int i = 1;i < bef_zaehler-1;i++)
{
bef_kette[i]->vorne = bef_kette[i-i];
bef_kette[i]->naechst = bef_kette[i+i];
bef_kette[i]->nr_bef = i + 1;
}
return bef_zaehler;
}
下面是main.c文件:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "file_operation.h"
#include "file_befehl.h"
#define Line_Max 1024
#define Anzahl_Befehle_Max 1024
struct befehle
{
int nr_bef;
char bef[Line_Max];
struct befehle *naechst;
struct befehle *vorne;
};
int main(void)
{
char path[] = "C:/Ec_WS/arbeitsraum";
char name[] = "test.txt";
char *zeile_inhalte[Anzahl_Befehle_Max] = {NULL};
struct befehle befehl_kette[Anzahl_Befehle_Max] = {NULL};
for(int i = 0;i < Anzahl_Befehle_Max;i++)
{
zeile_inhalte[i] = (char *) malloc(Line_Max*sizeof(char));
}
int a = fileOperation(path,name,zeile_inhalte);
printf("%d\n",a);
fflush(stdout);
for(int i = 0;i < a;i++)
{
printf("%3d: %-50s\n",i,zeile_inhalte[i]);
fflush(stdout);
}
printf("------------------------------------------\n");
fflush(stdout);
printf("------------------------------------------\n");
fflush(stdout);
for(int i = 0;i < a;i++)
{
befehl_kette[i] = (struct befehle *)malloc(sizeof(struct befehle));
}
int b = bef_annahme(a,zeile_inhalte,befehl_kette);
for(int i = 0;i < Anzahl_Befehle_Max;i++)
{
free(zeile_inhalte[i]);
}
for(int i = 0;i < b;i++)
{
free(befehl_kette[i]);
}
return 1;
}
编译之后就出现如下错误:

我在网上查的原因有可能是因为函数使用的参数类型是自定义类型(结构体指针数组)或者头文件的被循环引用,但是排查了一圈没搞懂怎么回事,不知道有没有什么好的解决方法。