代码之家  ›  专栏  ›  技术社区  ›  Benjamin Buch

什么是“使用A=结构A{};”擅长C++吗?

  •  3
  • Benjamin Buch  · 技术社区  · 3 年前

    我找到了构造

    using A = struct A{};
    

    在C++代码库中。这有什么好处?我的猜测是 using A 在这种情况下根本没有效果。

    1 回复  |  直到 3 年前
        1
  •  3
  •   StoryTeller - Unslander Monica    3 年前

    至于为什么它是有效的C++,我想这是由于与 typedef .许多C代码库都有这样的内容:

    typedef struct A {
      // ...
    } A;
    

    这是有效的C,出于兼容性的考虑,C++标准有接受这种构造的措辞(效果很小)。由于类型别名声明具有 using 意味着与等价物完全相同 类型定义 ,你所看到的内容的有效性很可能是一种新兴的性质。

    至于你为什么看到它,它可能只是一种C主义(经常进入C++代码),被翻译成了“现代C++”。这当然是愚蠢的,如果代码只用于C++,那么简单的结构声明就可以了 1.


    1. -C标准 在C23中添加一组功能,以增加与C++代码的奇偶性。我不知道有任何计划允许在C中使用现代C++类型的别名,但假设有,那么该构造也可以用于兼容性。