0

我正在尝试使用以下方法对一组嵌套结构进行 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 的完美用途。

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

4

2 回答 2

0

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

#define _A._Sim._In SIM_IN

但正如我所说,由于各种原因,您可能不喜欢这样。:)

于 2013-03-01T07:50:24.677 回答
0

点运算符是应用于对象的后缀运算符(就 C 而言)。即,您不能将其应用于类型。

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

 #define SIM_IN(x) x._Sim._In
于 2013-03-01T07:54:35.657 回答