extern的使用实例

                          多文件的变量和函数共享

利用关键字extern,实现全局变量的共享

extern 变量只能一次定义(声明定义), 多次声明

声明:

extern int a ;

int a ;

(声明)定义:

extern int a = 0;

int a = 0 ;

一、两个cpp文件之间共享

===test.cpp===


#include<iostream>
using namespace std;
int a = 0;   //定义变量
void jisuan(int b)   //定义函数
{
	a += b;
	cout << "test.cpp:"<<a<<endl;
}

===main.cpp===


#include <iostream>
using namespace std;
extern int a;    //引用test.cpp中的a变量
extern void jisuan(int b);  //函数声明,必须先声明

int main(int argc, char** argv) {
	jisuan(2);   //调用后,a=2
	cout << "main:" << a<<endl;
	return 0;
}


结果:

二、有头文件的文件间共享

=====test.h====

#ifndef _TEST_H_

#define _TEST_H_

extern int a; //声明

void jisuan(int b); //函数声明

#endif

====test.cpp===

#include<iostream>

using namespace std;

int a = 0 ; //定义


void jisuan(int b) //定义

{

a += b;

cout << "test.cpp:"<<a<<endl;

}

====main.cpp===

#include <iostream>

#include"test.h"

using namespace std;


//extern int a = 8; 错误,不能多次定义这个全局变量a

//extern int a ; //包含了头文件,变量和函数则不需要再次声明,也可以声明变量,表示其是引用

//extern void jisuan(int);

int main(int argc, char** argv) {

jisuan(2);

cout << "main:" << a<<endl;

int a = 7; //定义局部变量a

cout << "main:" << a<<endl;

return 0;

}

结果:

三、第二种的修改,在头文件中声明定义全局变量

=====test.h====

#ifndef _TEST_H_

#define _TEST_H_

int a = 0; //声明并且定义

void jisuan(int b); //函数声明

#endif

====test.cpp===

#include<iostream>

using namespace std;

extern int a ; //声明引用

void jisuan(int b) //定义

{

a += b;

cout << "test.cpp:"<<a<<endl;

}

====main.cpp===

#include <iostream>

#include"test.h"

using namespace std;


int main(int argc, char** argv) {

jisuan(2);

cout << "main:" << a<<endl;  //头文件中有全局遍量a

int a = 7; //定义局部变量a

cout << "main:" << a<<endl;

return 0;

}

结果:

猜你喜欢

转载自blog.csdn.net/qq_28145603/article/details/88546616