Tag: one definition rule

为什么在C ++中而不是在C中允许使用const全局变量的多个定义?

由于One Definition Rule,C或C ++中不允许对全局变量进行多重定义。 但是,在C ++中,const全局变量可以在多个编译单元中定义而没有错误。 这跟C中的不一样。 为什么C ++允许这样做而C不允许? 与C相比,为什么const全局的使用和行为在C ++中以这种方式与非const全局不同? C ++和C关于const的内容正在发生什么? 例如,这在C ++中是允许的,但在C中是错误的: // Foo.cpp const int Foo = 99; // Main.cpp const int Foo = 99; int main() { cout << Foo << endl; return 0; } 这对C来说很好,但C ++有问题: // Foo.cpp const int Foo = 99; // Main.cpp extern const int Foo; […]