Структура в C. Неизвестное имя типа, - PullRequest
0 голосов
/ 12 октября 2018

Я новичок в структурах в C, но, насколько я знаю, мой код "правильный".Я использую Codeblocks, но я также скомпилировал его в 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 голосов
/ 12 октября 2018

Также я бы посоветовал вам использовать "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"};
0 голосов
/ 12 октября 2018
struct film
{
    ...
} ;

, а затем

struct film f;

или

typedef struct
{
    ...
} film;

, а затем

film f;
0 голосов
/ 12 октября 2018

Вам нужно использовать:

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

0 голосов
/ 12 октября 2018

Это 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;
...