为什么我不能在 C++ 中在全局范围内单独声明和定义变量
why can't I give separate declaration and defintion of a variable in global scope in c++
#include <iostream>
using namespace std;
int temp;
int b=2;
temp = b;
int main(){
cout<<"temp is "<<temp<<endl;
return 0;
}
在这里,我只是将 b 的值分配给 temp,而 gcc 不允许我这样做,但是如果我在主范围内移动行"temp=b",它可以正常工作。我不明白这种行为。有人可以解释一下吗?
提前谢谢。
temp = b;
不是一个定义,而是一个作业。
赋值只能在某些地方完成,例如在函数或块内。
实际上有一些方法可以在main
及其子项之外从其声明中获取不同的变量设置,但它们有自己的问题(例如Google static initialisation order fiasco
(。最好在main
开始后执行此操作,以便您可以控制完成操作的顺序。
temp = b
是赋值,必须在代码块(在函数内(中完成。
相关文章:
- 为什么要将函数声明和定义放在单独的文件中
- 智能指针可以单独向前声明和初始化吗?
- 使用模板参数还包括 constexpr 成员函数enable_if单独定义和声明模板成员函数
- C++ 在具有单独标头的类中声明互斥锁
- 在 h 和 cpp 文件中单独声明和实现模板有时有效,有时会出现链接器错误
- 单独的类声明和方法定义文件问题
- 最终说明符对单独的声明和定义无效
- C++17 单独的显式方法模板实例化声明和定义
- 在C++中,如何在没有新元素且不单独声明单个元素的情况下创建"std::initializer_list<base *>"?
- 将全局声明为类声明语句的一部分与使用单独的语句声明全局之间是否有区别
- 如何将__DATE__和__TIME__宏拆分为变量声明的单独组件
- 从单独的文件转发模板函数的声明
- 单独的地图声明和初始化
- C++-模板类中模板函数的单独声明/定义
- 单独声明和初始化结构
- 友元函数的单独声明
- 有没有办法在单独的 .h 和 .cpp 文件中定义在命名空间中声明的函数
- 在单独的头文件 (C++) 中声明的命名空间中定义函数
- 是否可以在标头中声明 constexpr 类并在单独的.cpp文件中定义它
- 可以单独声明函数数组的元素