【发布时间】:2021-02-23 11:17:46
【问题描述】:
根据this questions's answer,C++ 中没有static struct 这样的东西。但是我正在重构代码:
static struct _MyStruct
{
int x;
}MyStruct;
结果意外地:
static struct _MyStruct
{
int x;
};
static _MyStruct MyStruct;
我很惊讶地发现它可以编译(VS2019,C++17),并且根据我的经验,编译器不允许你添加没有意义的关键字 - 所以 确实 它做任何事情或者是出于兼容性原因留在那里?
【问题讨论】:
-
这可能是 MSVC 的众多特性之一。
-
gcc/clang/msvc 拒绝该代码here(如预期)。
-
让我有点困惑的是,您链接的答案解释说对象可以是静态的(与类型相反),这就是您的代码的两个版本之间发生的变化。所以假设第一个很好,为什么不应该是第二个?
-
_Mystruct是为实现保留的名称。被抑制的警告可能是故意的,以免在其自己的标题上发出警告。在您自己的代码中使用它是未定义的行为 - 缺少警告是非常良性的结果。 -
@Eljay
Appears that the standard allows static there不。
标签: c++ visual-studio