C结构。未知类型名称,

时间:2018-10-12 11:25:48

标签: c structure codeblocks

我是C语言结构的新手,但据我所知,我的代码是“正确的”。我正在使用代码块,但我也在DEV C ++中对其进行了编译,但出现了相同的错误

#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;

}

我不知道这是什么错误。 enter image description here

4 个答案:

答案 0 :(得分:5)

这是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;

答案 1 :(得分:3)

struct film
{
    ...
} ;

然后

struct film f;

typedef struct
{
    ...
} film;

然后

film f;

答案 2 :(得分:0)

我也建议您使用“ 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"};

答案 3 :(得分:-1)

您需要使用:

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

或者您可以typedef结构

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

您可以使用film代替struct film

相关问题