如何解决外部变量 - 多个文件
当我在另一个不同类型的文件中重新定义 extern
变量时,VS 编译器没有给出错误消息。据我所知,它应该引发错误,因为它在另一个文件中被全局定义为 extern
。这种行为的原因是什么?
source1.cpp
extern int x;
source2.cpp
int x = 5;
test.cpp
#include <iostream>
double x = 455;
int main()
{
std::cout << x; // writes 455
}
解决方法
对于“仅链接”的回答很抱歉,但它说得很好。
odr 使用的每个非内联函数或变量的一个且只有一个定义(见下文)需要出现在整个程序中(包括任何标准和用户定义的库)。 编译器不需要诊断此违规,但未定义违反它的程序的行为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。