1

構造体を定義する必要があります。

//globalstruct.h
typedef struct _GlobalStruct {
    int a, b;
} GlobalStruct

GlobalStruct含めるだけで好きな場所で使用できますglobalstruct.h

例えば:

//test.c
#include globalstruct.h
void test(GlobalStruct *gs){...}

これどうやってするの?

よろしく

- - 編集 - -

私は完全に立ち往生しているので、私の質問をもう少し明確にする必要があると思います。

//main.c
#include "gstruct.h"
#include "a.h"
#include "b.h"

...
void something(GlobalStruct *gs){...}

//gstruct.h
#ifdef gstruct_h
#define gstruct_h
typedef struct _GlobalStruct{
    int a, b;
} GlobalStruct;
#endif

//a.h
#ifdef a_h
#define a_h
#include "gstruct.h"
GlobalStruct a_something(...);
#endif

//a.c
#include "gstruct.h"
#include "a.h"
GlobalStruct a_something(...){...}

//b.h
#ifdef b_h
#define b_h
#include "gstruct.h"
GlobalStruct b_something(...);
#endif

//b.c
#include "gstruct.h"
#include "b.h"
GlobalStruct b_something(...){...}

これでいい?それが私が本当に愚かな/小さい/愚かな何かを逃しているのなら。

ところで、私はコンパイルしていますgcc main.c a.c b.c -o the_thing

---2番目の編集----

オンラインの例を作成したので、それを見て、ダウンロードして試してみてください。コンパイルの準備はできていますが、コンパイル時に失敗します。

https://compilr.com/alexandernst/c-headers

4

2 に答える 2

4

もうすぐです。3つのエラーを修正する必要があります。

  1. includeディレクティブに引用符を追加します。

    #include "globalstruct.h"
    
  2. typedef宣言の最後にセミコロンが必要です。

  3. アンダースコアと大文字の名前は予約されているため、使用しないでください。代わりに、次のようなものを使用してください。

    typedef struct GlobalStruct_struct { /* ... */ } GlobalStruct;
    

(2番を見つけてくれた@chrisに感謝します!)

于 2012-08-23T23:03:09.653 に答える
2

ヘッダーファイルでは、#ifdefは#ifndefである必要があります

于 2012-08-24T01:35:01.830 に答える