说明
使用extern
关键字重新声明以前定义过的外部变量,以及使用c++作用域解析运算符来访问被隐藏的外部变量
代码
main.cpp
#include<iostream>
using namespace std;
// external variable, defined
double warming = 0.3;
void update(double dt);
void local();
int main()
{
cout<<"global warming is "<<warming<<" degrees.\n";
update(0.1);
cout<<"global warming is "<<warming<<" degrees.\n";
local();
cout<<"global warming is "<<warming<<" degrees.\n";
return 0;
}
support.cpp
#include<iostream>
extern double warming; // use warming from another file
void update(double dt);
void local();
using std::cout;
void update(double dt)
{
extern double warming;
warming +=dt;
cout<<"updating global warming to "<<warming;
cout<<" degrees.\n";
}
void local()
{
double warming = 0.8;
cout<<"local warming = "<<warming<<" degrees.\n";
cout<<"but global warming = "<<::warming;
cout<<" degrees.\n";
}
输出
global warming is 0.3 degrees.
updating global warming to 0.4 degrees.
global warming is 0.4 degrees.
local warming = 0.8 degrees.
but global warming = 0.4 degrees.
global warming is 0.4 degrees.