声明(declaration):告诉程序有这么一个名字,一个文件如果想使用从别处定义的名字则必须包含对那个名字的声明
定义(definition):创建与名字关联的实体
变量声明规定了变量的类型和名字,这一点在上定义与之相同。但除此之外,定义还申请存储空间,也可能为变量赋初始值
extern int i; //声明i而非定义i
int j; //声明并定义j
extern语句不能包含初值!
extern double pi=3.14; //报错
变量能且只能被定义一次,但是可以被多次声明
extern
可以置于变量或者函数前以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义
我自己写了一个文件试试
//main.cpp
#include <iostream>
#include <a.h>
using namespace std;
int main()
{
extern int a;
cout << a << endl;
}
//a.h
#pragma once
int a = 100;
这样打印出来肯定是100,然而我把extern int a;
改成int a
甚至去掉之后仍然打印出100,可以理解成这条语句主要还是给人看的吧。。