好的,我有一个名为main.c
的主要来源,名为test.h
的头文件,以及另一个名为handBeraknare.c
的类。
我试图通过将我的一些方法转移到类handBeraknare.c
来使我的代码更具可读性。
所以在main.c
我有一个看起来像这样的结构:
typedef struct kort{
int draget;
char farg;
int nummer;
struct kort *next;
}kort; `
在main.c
我使用kort k=(kort*)malloc(sizeof(kort));
创建其中几个并将它们放入数组中。我试图获得的是将kort
的这个数组发送到handBeraknare.c
中的函数,但我得到某种奇怪的错误"in file included from handBeraknare.c"
。
我在说这与现在知道"kort"
是什么{我的结构}的头文件有关。无论如何,这里有一些代码:
// in test.h
int beraknaFarg(kort kortHand[]);
// in handBeraknare.c
#include <stdio.h>
#include "test.h"
int beraknaFarg(kort kortHand[]){
char c = kortHand[0].farg;
int i;
for (i=1;i<5;i++){
if (kortHand[i].farg!=c){
printf("inte färg");
system("pause");
//Spelaren har inte färg. Retunera 0
return 0;
}
}
//Spelaren har färg. Retunera 1
printf("!!!!färg");
system("pause");
return 1;
}
//part of the main class. Calling function test()
// which calls the method beraknaHand which exists in handBeraknare.c
#include "test.h"
...
int main(int argc, char *argv[])
{
test();
}
// the testfunction in my mainclass
void test(){
char farg[4]={'S','K','R','J'};
int nummer[14]={0,2,3,4,5,6,7,8,9,10,11,12,13,14};
kort kortArray[52];
kort kortHand[5];
kort *k;
k=(kort*)malloc(sizeof(kort));
k->farg='s';
k->nummer=5;
kortHand[0]=*k;
k->farg='s';
k->nummer=11;
kortHand[1]=*k;
k->farg='s';
k->nummer=12;
kortHand[2]=*k;
k->farg='s';
k->nummer=11;
kortHand[3]=*k;
k->farg='s';
k->nummer=9;
kortHand[4]=*k;
beraknaFarg(kortHand);
答案 0 :(得分:2)
让test.h读取
typedef struct kort{
int draget;
char farg;
int nummer;
struct kort *next;
} kort;
int beraknaFarg(kort kortHand[]);
并从main.c中删除typedef
答案 1 :(得分:1)
您需要在头文件中定义typedef,然后将头文件包含在您希望它使用它的C文件中。
另外,因为它是typedef定义而不是声明,所以需要在C文件中定义它。
即
h文件:
typedef strcut
{
int a;
....
}t_struct_type;
c file:
t_struct_type struct_var;
如果要在多个c文件中使用struct_var,则需要在h文件中添加extern
关键字。像这样:extern t_strcut_type struct_var