在VS2010 c ++中,一个源文件如何引用另一个源文件中定义的用户定义变量类型?
我的全局部分中有一个包含typedef语句的大型源文件。 以下是该声明:
typedef struct tagDRAWITEMSTRUCT_itemData {
HICON hIcon[3];
int ndxPlayer; // Allowable values are 0:NumPlayers.
.
.
} DRAWITEMSTRUCT_itemData;
为方便起见,我最近将源文件分为两个文件 两个文件中都有对此数据类型的引用,但无法弄清楚如何使用 两个文件中引用此变量类型的实例。以下是一个 无法解决的合理解决方案列表:
(1)在一个文件中定义变量类型,并简单地在另一个文件中引用它,即:
DRAWITEMSTRUCT_itemData *foo // As a function arg or local variable definition.
extern DRAWITEMSTRUCT_itemData *foo // As a global declaration
(2)在一个文件中定义变量类型,并尝试使用以下任何一个全局语句在另一个文件中声明它:
extern tagDRAWITEMSTRUCT_itemData;
extern tagDRAWITEMSTRUCT_itemData DRAWITEMSTRUCT_itemData;
extern typedef struct tagDRAWITEMSTRUCT_itemData;
extern typedef DRAWITEMSTRUCT_itemData;
(3)将变量类型定义放在使用它的每个函数中,当然,它们根本不能用于函数参数。
在过去,我通过使用类定义来解决这个障碍 - 对于简单结构来说是一种巨大的痛苦。
答案 0 :(得分:1)
如果这是在您的 source.cpp
中//Now in source.h
typedef struct tagDRAWITEMSTRUCT_itemData
{
HICON hIcon[3];
int ndxPlayer; // Allowable values are 0:NumPlayers.
.
.
} DRAWITEMSTRUCT_itemData;
现在应该进入你的 source.h
新的 source2.cpp 还应该包含 source.h 以使用tagDRAWITEMSTRUCT_itemData
typedef。
答案 1 :(得分:0)
您应该将所有类型定义(例如typedef
,还有class
& struct
& enum
...)以及函数和变量声明放入公共头文件,您可以从源代码文件中#include
。