проблемы с созданием заголовочного файла - PullRequest
0 голосов
/ 02 марта 2012

Хорошо, у меня есть основной источник с именем 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);

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Создайте test.h для чтения

typedef struct kort{ 
      int draget; 
      char farg; 
      int nummer; 
      struct kort *next; 
      } kort;
int beraknaFarg(kort kortHand[]); 

и удалите typedef из main.c

1 голос
/ 02 марта 2012

Вам нужно определить typedef в файле заголовка, а затем включить файл заголовка в файл C, который вы хотите использовать.Кроме того, поскольку это определение типа, а не объявление, вам нужно определить его в файле C.IE
h file:

typedef strcut   
{  
   int a;  
   ....  
}t_struct_type;

c file:

t_struct_type struct_var;

Если вы хотите использовать struct_var в нескольких файлах c, вам нужно добавить ключевое слово externв файле h.как это: extern t_strcut_type struct_var

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...