在 GCC 中使用结构并出现错误

发布于 2024-12-06 14:42:14 字数 415 浏览 1 评论 0原文

相同的代码在 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

The same code ran in TURBO C.

    struct details
    {
      char name[20];
      int year;
      float price;
    }my_str;

    details book1[10];

This error is produced. How can this be fixed?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浪菊怪哟 2024-12-13 14:42:15
details book1[10];

需要...

struct details book1[10];
details book1[10];

needs to be ...

struct details book1[10];
输什么也不输骨气 2024-12-13 14:42:15

您需要像这样进行结构变量声明:

struct details book1[10];

这是因为 details 没有经过 typedef 编辑,因此您不能像用户定义类型一样使用它,因此您需要使用struct关键字。

请注意,在上面的定义中 my_str 是一个 structDetails 类型的变量(分配的对象)

您还可以执行以下操作:

typedef struct details
{
  char name[20];
  int year;
  float price;
} my_str;

然后执行:

my_str book1[10];

这与上面相同。这里请注意,my_str 不是变量(对象),而是您使用 typedef 关键字定义的类型名称。此后,编译器将知道您正在使用 my_str 作为您创建的复合结构数据类型的新用户定义类型名称,因此您可以使用 my_str直接而不是使用结构详细信息

You need to make the structure variable declaration like this:

struct details book1[10];

This is because the details is not typedefed, and therefore you cannt use it like a user defined type, and therefore you need to use the struct keyword.

Note that, in your above definition my_str is a variable (allocated object) of type struct details

You can also do:

typedef struct details
{
  char name[20];
  int year;
  float price;
} my_str;

And then do:

my_str book1[10];

This is same as above. Here note that, the my_str is not a variable (object) but the typename which you have defined with the typedef keyword. After this point the compiler would know that you are using the my_str as a new user defined type name for the composite structure data type you have created, and therefore you can use my_str directly instead of using struct details

超可爱的懒熊 2024-12-13 14:42:15

这对于 C 来说更正确一些:

typedef struct _detailstype
{
  char name[20];
  int year;
  float price;
} details;


details book1[10];

This is a a bit more correct in terms of C:

typedef struct _detailstype
{
  char name[20];
  int year;
  float price;
} details;


details book1[10];
冰之心 2024-12-13 14:42:14

有两种方法可以解决此问题:

将第二行更改为:

struct details book1[10];

或者您可以将声明更改为:

typedef struct{
    char name[20];
    int year;
    float price;
} details;

C 与 C++ 略有不同,因此您不能以完全相同的方式声明结构。

There are two ways to fix this:

Change second line to this:

struct details book1[10];

Or you can change the declaration to:

typedef struct{
    char name[20];
    int year;
    float price;
} details;

C is slightly different from C++, so you can't declare structs quite the same way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文