簡體   English   中英

嵌套結構的typedef

[英]typedef of nested structs

我正在嘗試使用以下命令對一組嵌套結構進行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._類型的類型定義(在指針,原型等中)……如果編譯器允許的話,這似乎是typedef的完美用法。

與使用整個嵌套名稱(_A._Sim._In)相比,如何使用一個名稱引用嵌套結構以使指針管理和類型指定更容易?

這樣做可能不是更可取,但是,如果使用typedef無法實現,我想您總是可以

#define _A._Sim._In SIM_IN

但是正如我所說,出於各種原因,您可能不喜歡這樣做。 :)

點運算符是應用於對象 (用C表示)的后綴運算符。 即,您不能將其應用於類型。

要達到您想要的目標,可以使用函數或宏,例如:

 #define SIM_IN(x) x._Sim._In

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM