2015-01-13 143 views
-3

下面的代码给了我一个缺失大括号的GCC错误,但无论我尝试使用哪种组合(包括只有一个值为0),它都不能解析。任何人都可以提供一些见解C结构数组初始化

#define NUM_TABLE_ELEMENTS 1 

typedef struct parameter_t 
{ 
    struct 
    { 
     uint8_t  A : 1; 
     uint8_t  B : 1; 
     uint8_t  C : 1; 
     uint8_t  D : 5;  
    } W;               
    uint8_t X; 
    uint8_t Y; 
    uint8_t Z; 
} parameter_t; 


parameter_t MyTable[NUM_TABLE_ELEMENTS] = 
{ 
    { { 1, 1, 1, 0 }, 0, 0, 0 }, 
}; 
+2

这个编译良好与C99标准设置([demo](http://ideone.com/0vuMlp))。 – dasblinkenlight

+0

请发布确切的错误消息和gcc标志。 – 2501

+0

错误:在初始化程序周围缺少大括号[-Werror =丢失大括号] 我意识到这是一个升级警告...我是肛门保持性。 – SeaNick

回答

2

这就是为什么你不快捷的事情,你就假设了一个问题:

我是用实际的结构是:

typedef struct parameter_t 
{ 
    struct 
    { 
     uint8_t  A : 1; 
     uint8_t  B : 1; 
     uint8_t  C : 1; 
     uint8_t  D : 5;  
    } W;               
    uint8_t X; 
    uint8_t Y[1]; 
    uint8_t Z[1]; 
} parameter_t; 


parameter_t MyTable[NUM_TABLE_ELEMENTS] = 
{ 
    { { 1, 1, 1, 0 }, 0, 0, 0 }, 
}; 

周围所以它缺少括号其他阵列,即使他们是单个元素...随时downvote我为我的懒散。