2013-02-28 48 views
0

我想要的typedef使用此一组嵌套结构的:的typedef

struct _A 
{ 
    struct _Sim 
    { 
     struct _In 
     { 
      STDSTRING UserName; 
      VARIANT Expression; 
      int Period; 
      bool AutoRun; 
      //bool bAutoSave; 
     } In; 

     struct _Out 
     { 
      int Return; 
     } Out; 

    } Sim; 

} A; 

typedef _A._Sim._In SIM_IN; 

的事情是在VS2010编辑喜欢它。它可以识别typedef中的元素,我可以将它作为参数包含到函数中,但是当您构建它时,首先会收到警告C4091(在未声明变量时忽略左侧),然后导致错误C2143“丢失”;“ ''

typedef的想法是使管理类型定义(在指针,原型等)到_A._Sim._In容易与一​​个名字...看似完美的用于typedef如果编译器允许它。

我如何引用嵌套结构与一个名字,使指针管理和类型specifiction比使用整个嵌套的名称(_A._Sim._In)?

+3

it..replaced了“”用“::” – brimaa 2013-03-01 00:01:39

+0

Hi Nux ...我需要类型和变量信息。我对结构如何工作的理解是顶部是类型,底部是变量(如果你想要的话)。在我的情况下,我需要定义的类型和变量。 – brimaa 2013-03-01 00:57:11

+0

不是真的看到http://stackoverflow.com/questions/4082972/struct-and-typedef-in-c-versus-c – Nux 2013-03-01 01:07:49

回答

0

点运算符是一个后缀运算符,应用于对象(按C语言)。也就是说,你不能将它应用于某种类型。

为了达到你想要的东西,你可以用我只是固定的一个函数或宏,例如:

#define SIM_IN(x) x._Sim._In 
+0

感谢所有回复的人。我认为多个问题包含符号和链接问题可能是理解C++语言最困难的方面之一,因为这种行为是意想不到的,原因往往是微妙的,难以确定。即使我读过的教科书也没有在这些问题上伸张正义,但他们对于理解构建任何合理大小的程序至关重要。关于C++的最佳信息来源之一我已经发布了IBM文档。 – brimaa 2013-03-02 06:19:43

+0

http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr015.htm它的写法清晰简洁,涵盖了C++和C的每条规则。我使用VS,但这是我在此时了解C++规则的圣经。 – brimaa 2013-03-02 06:23:09

0

容易它可能不是最好但如果使用typedef无法实现,我想你总是可以做

#define _A._Sim._In SIM_IN

但正如我所说,你可能不会因为各种原因。 :)