C 构造类型
C 结构类型?
a.c: In function ‘main’:
a.c:10: error: variable ‘a’ has initializer but incomplete type
a.c:10: warning: excess elements in struct initializer
a.c:10: warning: (near initialization for ‘a’)
a.c:10: warning: excess elements in struct initializer
a.c:10: warning: (near initialization for ‘a’)
a.c:10: error: storage size of ‘a’ isn’t known
为什么出错?
------解决方案--------------------
#include <stdio.h>
struct{
int x;
char y;
}kk;
int main()
{
struct kk a={1,'Q'};
printf("%d\n",a.x);
}
a.c: In function ‘main’:
a.c:10: error: variable ‘a’ has initializer but incomplete type
a.c:10: warning: excess elements in struct initializer
a.c:10: warning: (near initialization for ‘a’)
a.c:10: warning: excess elements in struct initializer
a.c:10: warning: (near initialization for ‘a’)
a.c:10: error: storage size of ‘a’ isn’t known
为什么出错?
------解决方案--------------------
//方法1
#include <stdio.h>
struct{
int x;
char y;
}a={1,'Q'}; // 定义a是匿名/无名的struct类型变量,注意这个匿名,表示此struct类型是没有名字的
int main()
{
printf("%d\n",a.x);
}
//方法2
#include <stdio.h>
struct TT{
int x;
char y;
}; //定义struct类型,名字为TT
int main()
{
struct TT a={1,'Q'}; // 定义struct TT类型的变量a
printf("%d\n",a.x);
}
//方法3
#include <stdio.h>
struct TT{
int x;
char y;
}a={1,'Q'};; // 定义struct TT类型同时定义此类型的变量a
int main()
{
printf("%d\n",a.x);
}
//方法4
#include <stdio.h>
typedef struct {
int x;
char y;
}kk; // 先定义一个匿名的struct类型,然后通过typedef给这个匿名类型定义另外一个名字kk
int main()
{
kk a={1,'Q'};
printf("%d\n",a.x);
}