我是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;
}
答案 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