C中的结构。未知类型名称,

C中的结构。未知类型名称,,c,structure,codeblocks,C,Structure,Codeblocks,我不熟悉C语言的结构,但据我所知,我的代码是“正确的”。我使用的是代码块,但我也在DEVC++中编译过,并且我得到了同样的错误 #include <stdio.h> #include <stdlib.h> struct film{ int year; char title[30]; char director[30]; char main_char[30]; } ; int main () { film venom={ 201

我不熟悉C语言的结构,但据我所知,我的代码是“正确的”。我使用的是代码块,但我也在DEVC++中编译过,并且我得到了同样的错误

#include <stdio.h>
#include <stdlib.h>

struct film{
   int year;
   char  title[30];
   char  director[30];
   char  main_char[30];
} ;


int main ()
{

    film venom={ 2018, "Venom", "Ruben Fleischer", "Tom Hardy" };

    printf("Year: %d\n", venom.year);
    printf("Title: %s\n", venom.title);
    printf("Director: %s\n", venom.director);
    printf("Main Character: %s\n", venom.main_char);

    system("PAUSE");
    return 0;

}
#包括
#包括
结构膜{
国际年;
字符标题[30];
char董事[30];
char main_char[30];
} ;
int main()
{
电影《毒液》={2018,《毒液》、《鲁本·弗莱舍》、《汤姆·哈代》};
printf(“年份:%d\n”,毒液年份);
printf(“标题:%s\n”,venom.Title);
printf(“主管:%s\n”,venom.Director);
printf(“主要字符:%s\n”,venom.Main\u char);
系统(“暂停”);
返回0;
}

我不知道是什么错误

< P>这是C,不是C++,所以结构有自己的命名空间。 您需要编写
struct film venom,或使用传统的
typedef

typedef struct film film;
通常附加到结构定义本身

typedef struct film{
   int year;
   char  title[30];
   char  director[30];
   char  main_char[30];
} film;
然后

struct film f;
film f;

然后

struct film f;
film f;
您需要使用:

struct film venom={ 2018, "Venom", "Ruben Fleischer", "Tom Hardy" };
或者您可以
typedef
struct

typedef struct {
   int year;
   char  title[30];
   char  director[30];
   char  main_char[30];
} film;

这允许您使用
film
而不是
struct film

此外,我建议您在声明结构时使用“s”和“t”来区分结构及其别名,并使用“t”别名作为类型

typedef struct s_film {
   int   year;
   char  title[30];
   char  director[30];
   char  main_char[30];
} t_film;
然后按以下方式使用:

t_film venom = {2018, "Venom", "Ruben Fleischer", "Tom Hardy"};

声明(
struct film venom
)时需要使用
struct
关键字。请不要发布图片。以文本的形式发布文本。哦!我明白了,谢谢!使用typedef或write struct film venom之间有区别吗?@User_1492没有区别。@User_1492实际上没有区别,因为C中的typedef只创建了一个别名。@P_uj_uuu:C 2018 6.2.3“标识符的名称空间”表示标签名称有单独的名称空间;结构、联合和枚举的标记;结构或联合体的成员(每个结构或联合体的单独名称空间);我通常会在typedef中添加一个
\t
,以清楚地看到它的含义。在这里使用
film\u t
就可以了。您甚至可以将两者结合起来:
typedef struct film{…}film,但我不确定这是否可取。