Visual c++ 在VS2010 c++;,一个源文件如何引用另一个源文件中定义的用户定义变量类型? < VS2010 C++中,一个源文件如何引用另一个源文件中定义的用户定义变量类型?

Visual c++ 在VS2010 c++;,一个源文件如何引用另一个源文件中定义的用户定义变量类型? < VS2010 C++中,一个源文件如何引用另一个源文件中定义的用户定义变量类型?,visual-c++,typedef,declaration,visual-studio-2010,Visual C++,Typedef,Declaration,Visual Studio 2010,我有一个很大的源文件,它的全局部分包含一个typedef语句。 声明如下: typedef struct tagDRAWITEMSTRUCT_itemData { HICON hIcon[3]; int ndxPlayer; // Allowable values are 0:NumPlayers. . . } DRAWITEMSTRUCT_itemData; 为了方便起见,我最近将源文件分为两个文件。 两个文件中都有对此数据类型的引

我有一个很大的源文件,它的全局部分包含一个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) 将变量类型定义放在每个使用它的函数中,当然,这对于函数参数来说根本不起作用


在过去,我通过使用类定义解决了这个障碍——对于简单结构来说,这是一个巨大的挑战

您应该将所有类型定义(即
typedef
,以及
class
&
struct
&
enum
..)以及函数和变量声明放在一个公共头文件中,您可以从源代码文件中
包含这些头文件。

如果这是在source.cpp中的话

它现在应该进入你的来源


新的source2.cpp还应该包含source.h以使用
tagDRAWITEMSTRUCT\u itemData
typedef.

我刚刚找到了一个似乎可行的简单解决方案:我刚刚找到了一个似乎可行的简单解决方案:我剪切了原始大型源文件的一部分,其中包含主对话框过程引用的一系列子函数功能。我将剪切的文本粘贴到一个新文件中,并将其保存为w/extension“.h”。在原始源文件中的删除位置,我添加了一个#include语句,引用所说的“头文件”。令我惊讶的是,这似乎奏效了。我以为我很久以前就尝试过这个解决方案,但没有成功。尽管如此,我还是希望有更直接的解决方案。
//Now in source.h

typedef struct tagDRAWITEMSTRUCT_itemData 
{
    HICON hIcon[3];
    int ndxPlayer;      // Allowable values are 0:NumPlayers. 
      .
      .
  } DRAWITEMSTRUCT_itemData;