2012-03-02 20 views
0

私は、main.cと呼ばれるメインソースと、test.hと呼ばれるヘッダーファイルと、handBeraknare.cと呼ばれる別のクラスを持っています。 私のコードのいくつかを私のメソッドの一部をクラスhandBeraknare.cに移すことで、コードをもっと読みやすくしようとしています。ヘッダーファイルの作成に関する問題

のでmain.cに、私は次のようになり、構造体があります。私はkort k=(kort*)malloc(sizeof(kort));を使用してこれらのカップルを作成し、配列に入れmain.c

typedef struct kort{ 
    int draget; 
    char farg; 
    int nummer; 
    struct kort *next; 
    }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

不十分な情報を提供しました。 handBeraknare.hの外観はどうですか?そして、正確なエラーメッセージを提供してください。 –

答えて

2

あなたは、ヘッダーファイルでのtypedefを定義する必要が

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

を読んで、main.cの

+0

これは機能しています。これは単に構文エラーの問題でした。私は私のヘッダーにtypedefを宣言し、mainleyからcompletleyを削除しました。ありがとう! –

1

からtypedefを削除するTEST.Hを作ります次に、ヘッダファイルを使用したいCファイルに含めます。 さらに、宣言ではなくtypedef定義なので、Cファイルで定義する必要があります。 すなわち
Hファイル:

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

Cファイル:

t_struct_type struct_var; 

複数のCファイルにstruct_varを使用したい場合、あなたは、hファイルにexternキーワードを追加する必要があります。 extern t_strcut_type struct_var

+0

あなたの答えによってちょっと混乱しました。 +1は動作中の解決策です。メインクラスからtypedef宣言全体を削除し、代わりにヘッダファイルに宣言しました。 externキーワードを使用せずに、mainとhandberaknareの両方でstructを使用してimを追加することもできます:) –

関連する問題