C++ 关键字 extern
C++ 关键字 extern
extern 是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。
1、extern 变量
B文件使用A文件的变量:
// 在A文件定义一个变量:
int a = 0;// 在B文件声明变量:
extern int a;
- 共享的变量定义只能出现一次,但可以在不同文件中声名多次
- 定义共享变量必须初始化
- 声名共享变量时不能初始化
- extern int a = 0;是定义变量,而不是声名
2、extern 函数
B文件使用A文件的函数:
实际上函数的声明和定义都不需要添加extern关键字,在实际使用的时候也最好不要添加关键字。函数加extern 可以取代 include “*.h” 来声明函数。
// 下面两个函数定义等价
extern int func(void)
{return 0;
}int func(void){return 0;
}// 下面两个函数声名等价
extern int func(void);int func(void);
3、extern const 变量
共享常变量:
常变量默认是静态声明的,所以定义和声名常变量多要加extern
// 在A文件定义一个变量:
extern const int a = 0;// 在B文件声明变量:
extern const int a;
4、extern “C”
在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,通过 extern “C” 显示声名用C语言规则编译该函数。
// 在.h文件的开头的地方
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */
…
程序语句
…
//.h文件结束的地方
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
C++ 关键字 extern相关推荐
- C语言的关键字 extern
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112033 C ...
- C语言-外部关键字extern
extern 关键字 extern 用在全局变量或函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用. 什么是定义,什么是声明? 什么是定义:所谓的定义就是为这 ...
- C# 关键字extern用法
C# 关键字extern用法 修饰符用于声明在外部实现的方法.extern 修饰符的常见用法是在使用 Interop 服务调入非 托管代码时与 DllImport 属性一起使用:在这种情况下,该方法还 ...
- 关键字extern用法
extern作用:在某个.cpp文件中存在这么一个函数/全局变量 声明外部函数 在a.cpp中使用b.cpp中函数,需要在a.cpp中函数使用之前用extern修饰函数声明. a.cpp #inclu ...
- c语言关键字extern作用,C语言中extern关键字详解
<C语言中extern关键字详解>由会员分享,可在线阅读,更多相关<C语言中extern关键字详解(5页珍藏版)>请在人人文库网上搜索. 1.C 语言中 extern 关键字详 ...
- c语言关键字extern作用,c语言extern关键字详解
标签: 在c语言中代码的执行顺序是从上往下执行的,如果定义的函数或者变量在调用之后,那么调用的时候编译就会找不到需要使用的变量.这样就会出现错误,如下代码: #include int main(){ ...
- c语言定义全局变量的关键字,C语言关键字extern
修饰对象:全局变量.函数 作用: 1.提示编译器在其他模块或者其他文件中查找该变量.函数的定义 2.可以引用定义在其他文件中的全局变量和函数 用法:先声明,再初始化,后调用. 1.声明形式:声明时要严 ...
- C语言关键字extern
一.前言 最近写一个代码,编译时老是出现:multiple definition,想到太恼火了,那就枚举一下可能出现的情况,再总结一下. 二.代码 编译环境:gcc version 9.4.0 (Ub ...
- C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)
1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...
最新文章
- linux必会命令 - 后台运行程序 - nohup、
- 我的学习之路_第十八章_SQL语句
- 【干货】从国外知名网站看用户体验4个基本标准
- mysql 1157_更新时出现MySQL错误1157,但是我在where子句中使用主键
- torch.nn.Embedding()的固定化
- mongodb集群linux日志分割,Linux下Mongodb数据库日志切割及定时删除
- js的隐含参数(arguments,callee,caller)使用方法
- 水晶报表中图片不显示解决方案
- Linux平台开源浏览器
- 正则表达式之Matcher类中group方法
- 惊喜来袭~进阶版《看漫画学Python 2:有趣、有料、好玩、好用》
- c语言文献,关于计算机C语言的外文文献
- [论文总结] 深度学习在农业领域应用论文笔记7
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- js日期加横杆_把日期横杠转化为斜杠
- Android 文件系统获取root权限和重新挂载根目录为可读写
- 机器人磨内孔_半导体阀块内孔机器人打磨,效果超乎想象!
- 速卖通代运营可靠吗?如何正确选择代运营?
- 【笔记分享】RS触发器
- Failed to load resource:the server responded with a status of 404()