【问题标题】:Same named variables into different structs [closed]相同命名的变量进入不同的结构[关闭]
【发布时间】:2014-01-19 18:11:27
【问题描述】:

是否可以将具有相同名称的变量声明到不同的结构中? 例如:

struct first
{
    int a;
    int b;
    int the_same;
};

struct second
{
    int x;
    int y;
    int the_same
};

【问题讨论】:

  • 与其在这里问是否可能,不如编译代码并自己看看?
  • 我已经做过了,效果很好,但是我想请教一下,我想知道是否建议这种方法。

标签: c variables struct naming-conventions variable-names


【解决方案1】:

是的,它们运行良好,因为它们属于不同的code scopes。您可以通过first.the_samesecond.the_same 访问它们。

[...] 作用域是名称解析的重要组成部分,而名称解析又是语言语义的基础。名称解析(包括范围)因编程语言而异,并且在编程语言中,因实体类型而异。与命名空间一起,范围规则在模块化编程中是至关重要的,因此程序的一个部分的更改不会破坏一个不相关的部分。 [...]

【讨论】:

    【解决方案2】:

    是的,您可以在不同的结构中使用同名的变量。

    struct first
    {
        int a;
        int b;
        int the_same;
    };
    

    首先听到 a,b 和 the_same 是结构的元素。并在结构中

    struct second
    {
        int x;
        int y;
        int the_same
    };
    

    x,y 和 the_same 是第二个结构的元素。

    编译器将引用这个变量,而不是单独的结构名称..

    【讨论】:

      【解决方案3】:

      这样做是可能的。您可能认为这就像 Enums,如果您在 2 个不同的枚举中具有相同的值,您将收到编译时错误,但如果 enums 命名空间不同,这将是可能的。例如:

      namespace a {
         enum a { a, b, c }
      
      }
      
      namespace b {
         enum a {a, b, c}
      }
      

      【讨论】:

      • 什么是命名空间?我只知道C,从来没有听说过这种东西。
      • 哦,对不起。命名空间是 C++ 中添加的一项功能。其目的是在代码中创建新的范围。
      • @NOVIN 在 C 中,命名空间的正确名称是重载类
      • @FilipeGonçalves 据我所知,C99 和 C11 中都不存在类的概念。而且在 C++ 命名空间中也有自己的概念,据我所知,没有重载类之类的东西,而是“类运算符(或函数)重载”
      • @Grady Player C 有“名称空间”。见 C116.2.3 Name spaces of identifiers
      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多