在 C++ 中 `using A = struct A{};` 有什么好处?

问题描述 投票:0回答:1

我找到了结构

using A = struct A{};

在 C++ 代码库中。这有什么用?我的猜测是

using A
在这种情况下根本没有效果。

c++ struct using
1个回答
3
投票

至于为什么它是有效的 C++,我想这是由于与

typedef
的奇偶校验。许多 C 代码库都有这样的东西:

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

这是有效的 C,为了兼容性,C++ 标准有措辞来接受这个结构(没有效果)。由于带有

using
的类型别名声明与等效的
typedef
完全相同,因此您所看到的有效性可能是一个紧急属性。

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


1 - C 标准 did 在 C23 中添加了一堆功能,以增加与 C++ 代码的奇偶校验。我不知道有任何计划允许在 C 中使用现代 C++ 类型别名,但假设有的话,该构造也可以用于兼容性。
© www.soinside.com 2019 - 2024. All rights reserved.