【问题标题】:defining a struct [duplicate]定义一个结构[重复]
【发布时间】:2011-06-22 19:49:42
【问题描述】:

可能重复:
Difference between 'struct' and 'typedef struct' in C++?

有什么区别:

struct a{
...
}

typedef struct{
...
}  a;

【问题讨论】:

  • 我不认为有一个(两者都定义了一个名为a的类型),但第一个更简单,更惯用。您有时会在 C 代码中看到第二个版本,其中第一个版本定义的类型必须称为 struct a 而不是 a

标签: c++ struct


【解决方案1】:

在 C++ 中,没有区别。然而,在 C 中,使用

struct a { ... };

要求您使用以下方式声明变量:

int main ( int, char ** ) 
{
    struct a instance;
}

为避免变量声明中出现多余的struct,需要使用上述typedef,并且只允许使用a instance; 语法

【讨论】:

  • 请注意,struct a instance; 语法在 C++ 中也有效。如果a 被声明为class,你也可以写成class a instance;
  • é:如果a 是用struct 定义的,您也可以写class a,反之亦然。
【解决方案2】:

在第一个声明中您必须说struct a my_struct; 在后者中您只需说a my_struct;

【讨论】:

  • @delnan :你是对的,我最近一直在做太多的 C,我认为这样的事情可能已经潜入我的 C++ 代码。
猜你喜欢
  • 2014-11-30
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2020-08-07
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多