当前位置: 首页 > news >正文

C++ primer 之 extern

C++ primer 之 extern

      • 什么是声明
      • 什么是定义
      • 两者有什么区别
      • ertern的作用

什么是声明

就是使得名字为程序所知,一个文件如果想使用别处定义的名字就必须包含对那个名字的声明。

什么是定义

负责创建与名字关联的实体。

两者有什么区别

变量声明和声明都规定了变量的类型和名字,但是定义还申请了存储空间,也可能会为变量赋一个初始值。

ertern的作用

如果想声明一个变量而非定义它,就在变量名前添加关键字(extern),而且不要赋初始值。

extern int i;  //声明i而非定义i
int j;         // 声明并定义j

举个栗子
创建 a.cpp 和 b.cpp
a.cpp代码如下所示:
在这里插入图片描述b.cpp代码如下所示:
在这里插入图片描述
编译成功显示 n = 10
在这里插入图片描述
注:在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误
再举个栗子 在上面a.cpp的基础上修改一下
在这里插入图片描述b.cpp 不变
编译运行,报错
在这里插入图片描述
报错原因猜测:,a.cpp中本来n是内部定义的变量,只在局部起作用,但是又在前面加了一个extern,使其与外部又可以联系,产生了矛盾。(如有错误,欢迎大佬批评指正

http://www.lryc.cn/news/21472.html

相关文章:

  • Linux 练习二 (VIM编辑器 + GCC编译器 + GDB调试)
  • python3 连接数据库 mysql PyMysql
  • 昇腾AI新技能,还能预防猪生病?
  • 模板方法模式(Template Method)
  • C C++ typedef的使用
  • Laravel框架03:DB类操作数据库
  • 数据结构期末复习总结(前章)
  • 设计环形队列
  • 面向对象之-接口鉴权
  • Python 多进程多线程线程池进程池协程
  • 【自然语言处理】基于句子嵌入的文本摘要算法实现
  • fiddler抓包
  • 【Linux】网络套接字编程
  • break与continue关键字
  • kafka使用入门案例与踩坑记录
  • 系统启动太慢,调优后我直呼Nice
  • java知识点
  • 文件的打开关闭和顺序读写
  • (十八)操作系统-进程互斥的软件实现方法
  • 2023年三月份图形化一级打卡试题
  • linux 防火墙管理-firewalld
  • 2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)
  • 2023年三月份图形化三级打卡试题
  • 蓝桥杯算法模板
  • python之并发编程
  • Vue.js自定义事件的使用(实现父子之间的通信)
  • 第12天-商品维护(发布商品、商品管理、SPU管理)
  • 动态分区分配计算
  • 【云原生】k8s的pod基本概念
  • 【史上最全面esp32教程】激光与食人鱼模块篇