C++声明extern变量和extern函数的用法

目录

 一、 声明extern变量

1、 如何声明

2、在何处声明

3、在何处初始化

4、在何处调用

5、举例声明extern变量

(1)、声明extern变量的test.h文件

(2)、初始化extern变量的test.cpp文件

(3)、调用extern变量的main.cpp文件

二、声明extern函数

1、 如何声明

2、在何处声明

3、在何处定义

4、在何处调用

5、举例声明extern变量

(1)、声明extern函数的test.h文件

(2)、定义extern函数的test.cpp文件

(3)、调用extern函数的main.cpp文件

三、总结


        extern关键字可以用来声明变量和函数作为外部变量或者外部函数供其它文件使用。

 一、 声明extern变量

1、 如何声明

        在正常的变量声明前增加extern关键字。

2、在何处声明

        在头文件中声明extern变量。比如:test.h。在变量声明的时候不要赋值。

3、在何处初始化

        在与头文件名称相同的.cpp文件中定义,比如:test.cpp,test.cpp中必须引用test.h;

4、在何处调用

        在主文件中调用,比如:main.cpp,主文件可以不与test.h同名,但必须必须引用test.h。

        主文件一定不要引用test.cpp,否则出现警告:LNK2005、LNK1169;

5、举例声明extern变量

(1)、声明extern变量的test.h文件

/*extern*/
//声明外部变量
extern int a;
extern int b;

(2)、初始化extern变量的test.cpp文件

/*extern*/
#include "test.h"

//定义外部变量、外部变量初始化
int a = 520;
int b = 1314;

(3)、调用extern变量的main.cpp文件

/*extern*/
//使用外部变量
#include <stdio.h>
#include "test.h"
/*#include"test.cpp"*/	//不可以这样引用,否则警告LNK2005、LNK1169

int main(void)
{
	printf("a = %d , b = %d\n", a, b);

	return 0;
}
/*运行结果
a = 520 , b = 1314	*/

二、声明extern函数

1、 如何声明

        在正常的函数声明前增加extern关键字。

2、在何处声明

        在头文件中声明extern函数。比如:test.h,声明extern函数不要书写函数体的实现方法。

3、在何处定义

        在与头文件名称相同的.cpp文件中定义和实现函数体,比如:test.cpp,test.cpp中必须引用test.h;

4、在何处调用

        在主文件中调用,比如:main.cpp,主文件可以不与test.h同名,但必须必须引用test.h。

        主文件一定不要引用test.cpp,否则出现警告:LNK2005、LNK1169;比如:

已启动生成...
1>------ 已启动生成: 项目: Project1, 配置: Debug x64 ------
1>main.cpp
1>LINK : 没有找到 C:\Users\pc\Desktop\extern\Project1\x64\Debug\Project1.exe 或上一个增量链接没有生成它;正在执行完全链接
1>test.obj : error LNK2005: "int __cdecl add(int,int)" (?add@@YAHHH@Z) 已经在 main.obj 中定义
1>test.obj : error LNK2005: "int a" (?a@@3HA) 已经在 main.obj 中定义
1>test.obj : error LNK2005: "int b" (?b@@3HA) 已经在 main.obj 中定义
1>C:\Users\pc\Desktop\extern\Project1\x64\Debug\Project1.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
1>已完成生成项目“Project1.vcxproj”的操作 - 失败。

5、举例声明extern变量

(1)、声明extern函数的test.h文件

/*extern*/
//声明外部变量
extern int a;
extern int b;
//声明外部函数
extern int add(int a, int b);	//extern关键字可要可不要

(2)、定义extern函数的test.cpp文件

/*extern*/
#include "test.h"

//定义外部变量、外部变量初始化
int a = 520;
int b = 1314;

//定义外部函数。实现外部函数的方法
int add(int a, int b)
{
	return a + b;
};

(3)、调用extern函数的main.cpp文件

/*extern*/
//使用外部变量
#include <stdio.h>
#include "test.h"
/*#include"test.cpp"*/	//不可以这样引用,否则警告LNK2005、LNK1169

int main(void)
{
	printf("a = %d , b = %d\n", a, b);		//调用外部变量
	printf("add(a, b) = %d\n", add(a, b));	//调用外部函数
	return 0;
}
/*运行结果
a = 520 , b = 1314
add(a, b) = 1834	*/

三、总结

  •  要养成正规的编程习惯,变量、函数、结构体、类的声明要放在.h文件中,比如test.h;结构体和类体的实现可以放在test.h文件中,但不要初始化。声明外部变量、声明外部函数,等时必须使用extern关键字。
  • 把变量的初始化、函数方法的实现、结构体的实现、类体的实现放在另一个.cpp文件中,这个.cpp文件默认的要与.h文件同名,比如test.cpp。同时在test.cpp要引用test.h文件。声明外部变量、声明外部函数时必须使用extern关键字。初始化外部变量、定义外部函数,等的实现方法时不要重复使用extern关键字。
  • main.cpp负责变量的引用、函数的调用、结构体变量定义和结构体成员的调用,类对象的定义和类成员的调用;调用外部变量、外部函数时不需要使用extern关键字。main.cpp要引用test.h文件,一定不要引用test.cpp文件。
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wenchm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值