【发布时间】:2016-11-21 08:42:52
【问题描述】:
所以我有几个自动生成的文件,每个文件都定义了一个具有唯一名称的复杂结构。它们由一些原始类型和结构组成。
这是这两个文件的一个小方案。一个car.h 和一个bike.h,每个文件都定义了相同的结构,称为Coordinates。但是当我尝试编译时,我得到了重新定义错误。
是否可以同时包含该头文件?还是我必须将它们合并到一个标题中?
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,而这个结构应该由两者共享。 -
生成器使用一个标头。我只是选择
Car和Bike将它们提取到一个带有它们的依赖项的自己的标题中。
标签: c++ struct include header-files redefinition