就我在标准中看到的而言,以下代码是有效的。它在MSVC1025中编译。
const struct omg;
struct omg volatile;
int main()
{
return 0;
}
限定词const
和volatile
在这些声明中似乎没用。他们既不帮助也不伤害编译器和程序员。
该标准似乎并未倾向于消除这些“空洞的模糊”。在空声明;
的情况下,明确允许它。
在预处理之后,还有其他令牌的情况与表达的含义无关吗?
答案 0 :(得分:4)
clang和gcc都使用-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]说:
[...]如果cv-qualifier出现在decl-specifier-seq中,则声明的init-declarator-list应为 不是空的。[...]