【发布时间】:2013-11-25 14:36:30
【问题描述】:
我有一个包含以下定义的头文件
const std::string error[] = {"a", "b"};
现在我将此文件包含在两个不同的翻译单元中并编译源代码。一切正常,但为什么呢?这预计会破坏one definition rule。
现在更有趣的是,我正在改变类型
const char* error[] = {"a", "b"};
这就是预期的错误
multiple definition of `error'
对于int、char、short 和其他整数类型,它的工作方式与 std::string 相同。这是什么?
【问题讨论】: