#include <stdio.h>
#include <stdlib.h>
typedef struct {
char name[20];
int age;
} employee;
int main(int argc, char** argv)
{
struct employee em1 = {"Jack", 19};
printf("%s", em1.name);
return 0;
}
这似乎不起作用,因为正如编译器所说,变量具有不完整类型的“struct employee”。怎么了?
答案 0 :(得分:4)
从
中删除struct struct employee em1 = {"Jack", 19};
您使用了
typedef struct
{
char name[20];
int age;
}
目的是不再需要输入struct。
答案 1 :(得分:4)
问题在于您将结构设为typedef
,但仍然使用struct
对其进行了限定。
这将有效:
employee em1 = {"Jack", 19};
或删除typedef
。
答案 2 :(得分:0)
要使用struct employee em1 = ...
,您需要使用标记声明结构。
struct employee /* this is the struct tag */
{
char name[20];
int age;
} em1, em2; /* declare instances */
struct employee em3;
typedef
会创建一个类型别名,您可以在不使用struct
关键字的情况下使用它。
typedef struct employee employee;
employee em4;
答案 3 :(得分:0)
由于您已经对自己的结构进行了typedef,因此不需要再次添加struct关键字。
typedef struct Employee{
char name[20];
int age;
} employee;
int main(int argc, char** argv)
{
employee em1 = {"Jack", 19};
printf("%s", em1.name);
return 0;
}