重新声明类类型的名称

Redeclaration of name of class type

本文关键字:类型 新声明 声明      更新时间:2023-10-16

考虑以下示例:

void foo()
{
    class A;
    class A;
}
int main()
{
    foo();
    return 0;
}

它工作得很好。为什么允许重新命名类类型?我困惑…

UPD:请给我一个c++规范中允许这样重新声明的引用…如果可能的话。

§3.1声明(第7条)可以在翻译单元中引入一个或多个名称,也可以重新声明先前声明引入的名称。

在第一个从句中。

第二个子句指定什么是声明。我没有把它复制到这里,因为它包含了很多例子。

DeclarationDefinition是两个不同的概念。您可以在翻译单元中任意次数地声明一个名称。但是这个定义应该只出现一次。检查这个和这个

此外,如果每个类A在不同的cpp文件中作为全局变量声明如果使用"-warn-common"

调用g++,链接器将引发警告。