我有一个头文件,其中包含以下定义。
现在我将此文件包含在两个不同的翻译单元中,并编译源代码。一切正常,但为什么呢?这应该会破坏 "一个定义规则"。
现在更有趣的是,我正在改变类型。
const std::string error[] = {"a", "b"};
现在我将此文件包含在两个不同的翻译单元中,并编译源代码。一切正常,但为什么呢?这应该会破坏 "一个定义规则"。
现在更有趣的是,我正在改变类型。
const char* error[] = {"a", "b"};
这里出现了预期错误。
multiple definition of `error'
对于int
、char
、short
和其他整型类型,它的工作方式与std::string
相同。这是什么意思?
被声明为const且没有显式声明为extern的对象具有内部链接。
- axe