我有一个包含以下定义的头文件
const std::string error[] = {"a", "b"};
现在我将此文件包含在两个不同的翻译单元中并编译源代码。一切正常,但为什么呢?这有望打破one definition rule
。
现在更有趣的是,我正在改变类型
const char* error[] = {"a", "b"};
这就是预期的错误
multiple definition of `error'
它的工作方式与 std::string for int
、char
和short
其他整数类型的工作方式相同。这是什么?