1 typedef struct
2 {
3 int a;
4 int b;
5 }test;
6
7 test tt[5];
8 int main(void)
9 {
10 tt[1] = { 1, 2 };
11 return 0;
12 }
GCC 编译出错:
1.c:10:10: error: expected expression before ‘{’ token
解决方法: 加上类型转换:
tt[1] = (test){ 1, 2 };
这里右边的 表达式实际上是 compound literal (C99).
它的语法:
( type ) { initializer-list } |
它创建一个对应类型的没有名字的对象,并按照初始化列表被初始化成对应的值。
类似代码:
void foo(test *);
foo( &(test){2,3});
int *y = (int []) {1, 2, 3};