extern 声明用法
- extern 声明用法 推荐度:
- 相关推荐
extern 声明用法
变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
定义包含了声明,但是声明不包含定义,如
int a = 0; //定义并声明了变量 a
extern int a; //只是声明了有一个变量 a 存在,具体 a 在哪定义的,需要编译器编译的时候去找。
函数也是类似,定义的时候同时声明。但如果只是声明,编译器只知道有这么个函数,具体函数怎么定义的要编译器去找。
void fun1();
//函数声明
void fun1()
{//函数定义
cout<<"fun1"<<endl;
}
extern 关键字声明在变量和函数之前的说明。
1、作用在变量之前
变量只允许定义一次,但可以在多个文件中声明。
Test.cpp 中:
int s32Val = 0; // 定义一个变量 s32Val,并赋初值为 0
Test1.cpp 中:
extern int s32Val; // 声明变量 s32Val,它在 Test.cpp 中被定义,此处不可赋值
Test2.cpp 中:
extern int s32Val; // 声明变量 s32Val,它在 Test.cpp 中被定义,此处不可赋值
2、作用在函数之前
Test.h:
extern void Fun(); // 函数声明,extern 用于标识次函数为外部可调用函数
Test.cpp:
void Fun(); // 函数定义
为什么会这样呢?因为 extern int a; 只是声明而不是定义,声明是不会为变量开辟内存空间的,自然无法对其进行初始化的操作。
最新文章
- Driller源码阅读笔记(一)
- (转载)俞敏洪一分钟励志演讲
- 【时间复杂度】时间复杂度
- #include < > 和 #include “ “ 的区别
- 黑客养成记(4)
- 最新大数据可视化展示效果,别误会了,这才是可视化该有的样子
- 回溯法——回溯法的算法思想
- CA6140车床拨叉工艺及铣30X80面夹具设计
- VSS使用技巧
- ext2与ext3的区别
- void指针(void *)是什么?如何使用它
- VC知识库的一篇文章
- 二叉树的五种遍历方式
- Postgresql通过docker进行高可用部署 pgpool
- 小程序列表多个批量倒计时
- 使用telnet登陆smtp服务发邮件(带身份验证)
- 【Qt入门第23篇】 数据库(三)利用QSqlQuery类执行SQL语句