嵌套结构的类型定义

typedef of nested structs

本文关键字:定义 类型 结构 嵌套      更新时间:2023-10-16

我正在尝试使用这个类型定义一组嵌套结构:

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的编辑器喜欢它。它识别类型定义中的元素,我可以将其作为函数的参数包含,但是当你去构建它时,我首先得到警告C4091(当没有声明变量时忽略左边),然后导致错误C2143"丢失";"之前"。

typepedef的思想是使管理类型定义(指针、原型等)到_A._Sim。用一个名字…如果编译器允许,这似乎是typedef的完美用法。

我如何用一个名称引用嵌套结构,使指针管理和类型规范比使用整个嵌套名称(_A._Sim._In)更容易?

点操作符是应用于对象(就C语言而言)的后缀操作符,也就是说,不能将其应用于类型。

要达到你想要的,你可以使用函数或宏,例如:

 #define SIM_IN(x) x._Sim._In

这样做可能不太可取,但如果不能使用typedef实现,我想你总是可以使用

#define _A._Sim._In SIM_IN

但正如我所说,出于各种原因,你可能不喜欢那样。:)