如果全局变量默认是外部变量,为什么要添加"extern"关键字?
Why to add "extern" keyword if the global variable is external by default?
main.cpp
#include <iostream>
extern int g_x; // this extern is a forward declaration of a variable named g_x that is defined somewhere else
int main()
{
std::cout << g_x; // prints 2
return 0;
}
添加.cpp
int g_x { 2 };
如果我在 main.cpp 中删除 extern,那么代码不起作用。另一方面,我不需要 extern 在 add.cpp。默认情况下,全局变量是外部变量,但仍然是外部变量。是因为外部链接是链接在不同文件中的两个实体之间的"单方面关系"吗?
extern
不同于外部链接。extern
只是意味着你做了一个声明,并且变量是在其他地方定义的。
如果删除extern
,int g_x
将在违反 ODRmain.cpp
中定义(因为您已经定义了两次(。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用extern类
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 我应该在源文件之间共享的常量的定义中添加关键字"extern"吗
- 在头文件中添加"extern C"有什么好处?