相关疑难解决方法(0)

为什么在C++中而不是在C中允许对const全局变量进行多重定义?

由于One Definition Rule,C或C++中不允许对全局变量进行多重定义.但是,在C++中,const全局变量可以在多个编译单元中定义而没有错误.这和C中的不一样.

为什么C++允许这样做而C不允许?与C相比,为什么const全局的使用和行为在C++中以这种方式与非const全局不同?关于const,C++和C的内容正在发生什么?

例如,这在C++中是允许的,但在C中是错误的:

// Foo.cpp
const int Foo = 99;

// Main.cpp
const int Foo = 99;
int main()
{
    cout << Foo << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这对C来说很好,但C++有问题:

// Foo.cpp
const int Foo = 99;

// Main.cpp
extern const int Foo;
int main()
{
    cout << Foo << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ const one-definition-rule

28
推荐指数
3
解决办法
8618
查看次数

标签 统计

c ×1

c++ ×1

const ×1

one-definition-rule ×1