gpt4 book ai didi

C++标准歧义

转载 作者:可可西里 更新时间:2023-11-01 17:56:43 24 4
gpt4 key购买 nike

据我在标准中所见,以下代码是有效的。它在 MSVC1025 中编译。

const struct omg;
struct omg volatile;

int main()
{
return 0;
}

限定符 constvolatile 在这些声明中似乎毫无意义。它们既不会帮助也不会伤害编译器和程序员。

该标准似乎并不打算消除这些“空洞的歧义”。在空声明 ; 的情况下,它是明确允许的。

是否还有其他标记在预处理后与表达式的含义无关的情况?

最佳答案

两者都是clanggcc使用 -pedantic-errors 拒绝此代码。 clang 提供以下错误:

error: 'const' is not permitted on a declaration of a type [-Werror,-Wmissing-declarations]
const struct omg;
^

error: 'volatile' is not permitted on a declaration of a type [-Werror,-Wmissing-declarations]

C++ 标准草案第 7.1.6.1 节 cv-qualifiers [dcl.type.cv] 说:

[...]If a cv-qualifier appears in a decl-specifier-seq, the init-declarator-list of the declaration shall not be empty.[...]

关于C++标准歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com