2014-02-06 82 views
0

我一直試圖在主(尚未調用)之前運行此操作。它說初始化失敗。 可能是什麼原因?編譯器抱怨大括號的數量,但他們似乎沒問題。初始化失敗的結構

struct contain { 
    char* a;   
    int allowed; 

    struct suit { 
     struct t { 
     char* option; 
     int count;  
     }; 

     struct inner { 
     char* option; 
     int count;  
     };   
    }; 
}; 

// initialize 
struct contain _vector = { 
    .a = "John", 
    .allowed = 1, 
    .suit = { 
       .t = { 
        .option = "ON", 
        .count = 7 
       }, 
       .inner = { 
        .option = "ON", 
        .count = 7 
       }   
       } 
}; 
+0

'.membername ='被稱爲成員初始化語法,要使用它,您需要* members *,而不僅僅是decl。 – WhozCraig

回答

2

您需要實際聲明內部結構類型的成員。

struct contain { 
char* a;   
int allowed; 

struct suit { 
     struct t { 
       char* option; 
       int count;  
     } t; 

     struct inner { 
       char* option; 
       int count;  
     } inner; 
} suit; 
}; 
1

您聲明struct suit作爲struct contain內部的類型,但你永遠不聲明該類型的變量。 suitt也不是inner都是變量。你可能想是這樣

struct suit { 
    struct t { 
      char* option; 
      int count;  
    } suit_t; 

    struct inner { 
      char* option; 
      int count;  
    } suit_inner;   
} suit_object; 
}; 

雖然自tinner基本上是相同的時間,那麼你可能想單獨聲明,作爲一個類型,使該類型的tinner變量。