2016-07-04 136 views
0

如何可以初始化以下结构具有这些值:结构数组元素初始化

struct test_str { 
unsigned char Add[6]; 
unsigned int d; 
unsigned char c; 
}my_str; 

我试过,但导致错误:

struct test_str { 
unsigned char Add[6]; 
unsigned int d; 
unsigned char c; 
}my_str {.Add[0]=0x11,.Add[0]=0x22,.Add[0]=0x33, 
     .Add[0]=0x44,.Add[0]=0x55,.Add[0]=0x66, 
     .d=0xffe,.c=10}; 

回答

3

在现代C++ 11或更高(作为问题最初只是标记为C++)你有什么叫aggregate initialization。它的工作原理是这样的:

struct test_str { 
    unsigned char Add[6]; 
    unsigned int d; 
    unsigned char c; 
} my_str { {0x11, 0x22, 0x33, 0x44, 0x55, 0x66}, 
      0xffe, 
      10 
     }; 

int main() 
{} 

Live on Coliru

内的一对括号是不是真的有必要,但我更喜欢它清楚起见。注意:你应该亲自参加一个很好的介绍会C++ book,这样你就可以了解这门语言的基础知识。

编辑

在C(你重新标记你的问题)和预C++ 11,你需要一个等号。此外,在C内部大括号不是可选的:

struct test_str { 
    unsigned char Add[6]; 
    unsigned int d; 
    unsigned char c; 
} my_str = { {0x11, 0x22, 0x33, 0x44, 0x55, 0x66}, 
      0xffe, 
      10 
      }; 

int main() 
{} 
+0

你有任何想法CodevisionAVR支持聚合初始化? ';'预计,但'{'发现 –

+0

@hosseinvalizadeh我绝对不知道。尽管这是一个标准功能,并且它应该被任何标准的C++兼容编译器接受。你的问题是否涉及C?如果是,请重新标记它。 – vsoftco

+0

标签编辑!我得到这个错误:';'预计,但{'发现 –