在TURBO C中运行相同的代码。
struct details
{
char name[20];
int year;
float price;
}my_str;
details book1[10];
产生此错误。如何解决这个问题?
ram.c: In function ‘main’:
ram.c:11:1: error: ‘details’ undeclared (first use in this function)
ram.c:11:1: note: each undeclared identifier is reported only once for each function it appears in
答案 0 :(得分:2)
有两种方法可以解决这个问题:
将第二行更改为:
struct details book1[10];
或者您可以将声明更改为:
typedef struct{
char name[20];
int year;
float price;
} details;
C与C ++略有不同,因此您无法以完全相同的方式声明结构。
答案 1 :(得分:2)
details book1[10];
需要......
struct details book1[10];
答案 2 :(得分:1)
你需要像这样制作结构变量声明:
struct details book1[10];
这是因为details
不是typedef
,因此您不能像用户定义的类型那样使用它,因此您需要使用struct
关键字。
请注意,在您的上述定义中,my_str
是struct details
类型的变量(已分配对象)
你也可以这样做:
typedef struct details
{
char name[20];
int year;
float price;
} my_str;
然后做:
my_str book1[10];
这与上述相同。请注意,my_str
不是变量(对象),而是您使用typedef
关键字定义的类型名称。在此之后,编译器将知道您正在使用my_str
作为您创建的复合结构数据类型的新用户定义类型名称,因此您可以直接使用my_str
而不是struct details
1}}
答案 3 :(得分:0)
就C而言,这更为正确:
typedef struct _detailstype
{
char name[20];
int year;
float price;
} details;
details book1[10];