为什么我不能在 C++ 中在全局范围内单独声明和定义变量

why can't I give separate declaration and defintion of a variable in global scope in c++

本文关键字:声明 单独 范围内 定义 变量 全局 不能 C++ 为什么      更新时间:2023-10-16
#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是赋值,必须在代码块(在函数内(中完成。