2012-05-03 10 views
0

宿題はありませんが、基本的な作業中に失われているように見えます。異なるソースファイルに定義されている構造体へのアクセスについて

2つのCソースファイルがあります。 1.C & 2.C

2.C、次のとおりです。

typedef struct mystr_ 
{ 
    int a; 
    float b; 
}mystr; 

void fun() 
{ 
    mystr q; 

    some code.... 
} 

そして1.Cは以下の通りです:

#include "stdio.h" 

void fun(); 


main() 
{ 
    //How to access/declare a variable of type mystr here. 

    mystr *v1;//This obviously gives compiler errors 

     some code....  

} 

2で定義された構造mystrにアクセスする方法。 cをファイル1.cからその構造体型の変数に変更しますか?

EDIT:

申し訳ありませんが、OPに言及するのを忘れてしまいました。私は何らかの理由でヘッダファイルに宣言を出すことはできません - >それは私が既存のコードをチェックしようとしている速いハックです。それから、他のソースファイルから直接アクセスする方法はありますか?

+0

ヘッダーファイルに 'mystr'を定義し、両方のCファイルにインクルードします。 –

+0

他のソースファイルからアクセスする方法はありません。 – Feo

答えて

3

ヘッダーを使用します。

EDIT 2.h

typedef struct mystr_ 
{ 
    int a; 
    float b; 
}mystr; 

ファイルを作成し、1.c

#include "2.h" 
#include "stdio.h" 

void void fun(); 

にそれを含める:あなたは、ヘッダーファイルに宣言を抽出することができませんし、それが含まれているため、ノーがある を宣言をコピーする以外の方法。これは非常に壊れやすい構造ですが、すばらしいですが主に汚れていて、あなたが他の選択肢から外れていない限り、本当にお勧めできません。

+0

申し訳ありません。私は何らかの理由でヘッダファイルに宣言を出すことはできません - >それは私が既存のコードをチェックしようとしている速いハックです。それから、他のソースファイルから直接アクセスする方法はありますか? – goldenmean

+3

いつでもコピー&ペーストすることができます: – hirschhornsalz

+0

ありがとうございます。 1.cの構造体定義を貼り付けてコピーすれば、その型の変数を作成できます。それが構造宣言の再宣言か再定義かどうかは分かりませんでしたか?それは明らかに再定義エラーなしで動作するので、再宣言しているようです。 – goldenmean

関連する問題