是否可以包含多个头文件来定义具有相同名称的复杂结构?

时间:2016-11-21 08:42:53

标签: c++ struct include header-files redefinition

所以我有几个自动生成的文件,每个文件都定义了一个具有唯一名称的复杂结构。它们由一些原始类型和结构组成。

这是两个文件的一个小方案。一个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)
[...]

提前感谢您的建议!

1 个答案:

答案 0 :(得分:0)

这可能会导致重新定义错误。 我建议将Coordinates结构放在自己的头文件中(防止多次包含)并将其包含在Car.h和Bike.h中