结构体定义后的变量名

her*_*ity 5 c++ syntax struct c++11

下面是什么bar以及x为什么它们位于那里?它们是 s 的实例吗struct

我正在阅读这个Stackoverflow 问题,我已将其代码粘贴到此处,我发现海报和答案bar之一xstruct. cpp 参考在其示例中不使用此语法,我不知道该语法被称为什么,也不知道该语法如何查找它。

如果只是创建 a 的实例struct,为什么不像cpp Reference在其示例中那样将其写在下一行中呢?

struct _bar_ 
    {
        int a;
    } bar; 
Run Code Online (Sandbox Code Playgroud)
struct test {
      int value;
   } x;
Run Code Online (Sandbox Code Playgroud)

Eri*_*hil 6

struct test { int value; } x;声明x为类型的对象struct test。这是一个简单的声明,与 相同int x,用struct test { int value; }代替int

  • 如果通过“一次性”的事情,您询问是否可以在同一范围内再次使用“struct test”来声明其他对象,那么,不,这不是一次性的事情;它可以再次用作“struct test”或(在 C++ 中但不是 C)“test”。如果省略该标记,则该结构将是没有名称的类型的唯一定义。至于“为什么”,人们学会阅读代码。此外,声明的对象的标识符确实出现在新行上,因为“} bar;”和“} x;”出现在它们自己的行上。经过一点经验之后,这一点就变得非常容易识别。 (3认同)
  • 为什么要这样做呢?看到‘bar’是不是很难呢?为什么不另起一行写呢?这是一次性的事情吗? (2认同)