私はいくつかの自動生成されたファイルを持っており、それぞれが一意の名前を持つ複雑な構造体を定義しています。それらはいくつかの基本型と構造体で構成されています。同じ名前の複雑な構造体を定義するいくつかのヘッダファイルを含めることは可能ですか?
これは、2つのファイルの小さな構成です。 1つのcar.h
と1つのbike.h
の各ファイルは、Coordinates
という同じ構造体を定義しています。しかし、私がコンパイルしようとすると、私は再定義エラーを受け取ります。
両方のヘッダーファイルを含めることは可能ですか?または、それらを1つのヘッダーにマージする必要がありますか?
car.h
#ifndef CAR_H_
#define CAR_H_
#pragma pack(push,4)
typedef struct
{
uint32 pos_x;
uint32 pos_y
} Coordinates;
#pragma pack(pop)
#pragma pack(push,1)
typedef struct
{
tUInt8 id;
Coodinates position_of_car;
} Car;
#pragma pack(pop)
[...]
Bike.hはCoordinates
も定義する。
bike.h
#ifndef BIKE_H_
#define BIKE_H_
#pragma pack(push,4)
typedef struct
{
uint32 pos_x;
uint32 pos_y
} Coordinates;
#pragma pack(pop)
#pragma pack(push,1)
typedef struct
{
uint8 id;
Coodinates position_of_car;
} Bike;
#pragma pack(pop)
[...]
事前にお寄せいただきありがとうございます。
このC++にタグを付けました。 'typedef struct {...} Foo'は' struct Foo {...}; '(これはCでも' typedef struct Foo {...} Foo; 'と書くことができます。そうすれば、#includeなしで 'struct Foo'を参照することができます) –
ジェネレータがどのように供給されるかは、それほど問題になるかもしれません。私はあなたが何らかの種類のデータ構造体を使用し、 'Car'と' Bike'に 'Coordinates'をローカルに定義していると思いますが、この構造は両方で共有されるべきです。 –
ジェネレータには1つのヘッダが供給されます。私は 'Car'と' Bike'を選んで、依存関係を持つヘッダにそれらを抽出します。 – CanO