1、声明外部的变量
由于编译是对单个的文件进行编译,所以在编译一个a.cpp文件的时候,若是要在a.cpp中使用b.cpp中的变量,直接使用则编译肯定会报错的,所以这个时候应该用extern修饰在a.cpp中所使用的b.cpp中的变量,这个时候编译器会忽略这个错误,直到链接的时候(“将文件融为一体”)会找到b.cpp中的变量,这样便可以了。extern的作用相当于让编译器在编译阶段忽略这个错误

例:

//a.cpp

extern int a; //并未分配空间,只是通知编译器,在其它文件定义过

printf("%d",a);

//b.cpp

int a = 9;

2、在一个C++文件中调用另一个C++文件中的函数
和第一点是一样的,a.cpp中调用b.cpp中的函数,需要在a.cpp中申明函数是extern的
注意,这个声明,其实就是. h头文件的内容
这个extern可以省略
如果头文件中仅仅是这个函数声明,一是extern可以省略。二是相应的源文件. c不用包含这个头文件
即不需要#include xxxxx. h文件

3、在C++文件中调用C方式编译的函数
主要原因是C++在编译后生成的函数名和C的函数名不一样,需要有一个转化过程,在C++中通过extern "C"修饰函数,可以表明这个函数是C编译的,命名规则就符合C。

//a.cpp C++编译

extern “C” //不加会报错,提示找不到该函数
{
void print();
}

void main()

{

print();

}

//b.cpp C编译

void print()

{

printf("123456");

}
————————————————
版权声明:本文为CSDN博主「晚餐吃什么」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Think88666/article/details/90706719

C语言中extern的作用相关推荐

  1. c语言关键字extern作用,C语言中extern关键字详解

    <C语言中extern关键字详解>由会员分享,可在线阅读,更多相关<C语言中extern关键字详解(5页珍藏版)>请在人人文库网上搜索. 1.C 语言中 extern 关键字详 ...

  2. C语言中static的作用及C语言中使用静态函数有何好处

    转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...

  3. c语言中extern关键字_了解C语言中的extern关键字

    c语言中extern关键字 In this article, we'll take a look at understanding the extern keyword in C. 在本文中,我们将了 ...

  4. c语言中extern变量,C语言中的Extern用法

    C语言中的Extern用法 (2010-07-28 12:50:39) 标签: 杂谈 分类: 技术 C语言中的Extern用法 网上有很多帖子问C语言中Extern的用法,而且回答的详细程度各尽不同. ...

  5. C语言中extern关键字的使用

    C语言中extern关键字的使用,直接上代码. file1.c文件 #include<stdio.h> extern long power(int); int A = 2; int mai ...

  6. php的cookie变量作用,PHP语言中cookie的作用

    PHP语言中cookie的作用 时间:2015-11-9 Cookie的概念最早是由Netscape在1994年提出来的,它是保存在浏览器中的小信息包,更确切地说,Cookie是保存在客户端硬盘里的, ...

  7. 以下关于c语言中static和const,c语言中static const作用

    c语言中static const作用 (2012-06-21 07:51:08) 标签: it 关键字static: 1. 在函数体内,一个被声明为静态的变量在这一个函数被调用的过程中维持其值不变. ...

  8. java中flush函数作用_Java语言中flush()函数作用及使用方法详解

    最近在学习io流,发现每次都会出现flush()函数,查了一下其作用,起作用主要如下 //------–flush()的作用--------– 笼统且错误的回答: 缓冲区中的数据保存直到缓冲区满后才写 ...

  9. c语言extern的作用6,C语言中extern用法详解

    本文基于VC6.0 编译器 首先文档结构如下: myextern.h和myextern.c中定义extern函数 main.c中定义main方法,调用extern函数 1.第一个尝试: myexter ...

最新文章

  1. code blocks 快捷键
  2. Gym 101334A Area 51 数学
  3. Android Fragment add/replace以及backstack
  4. **Java有哪些悲观锁的实现_面试4连问:乐观锁与悲观锁的概念、实现方式、场景、优缺点?...
  5. C++ Builder 5编HOOK程序
  6. Linux自学笔记——Centos系统安装
  7. oracle中只存储两年数据,Oracle中作为永久存储机制的嵌套表的数据追加
  8. 湖南高校教师评职称计算机等级考试,湖南高校教师职称评审出台新规,这些要点你了解了吗?...
  9. The method setCharacterEncoding(String) is undefined for the type HttpServletResponse 是什么原因?...
  10. ubuntu-多网卡聚合-bond技术教程
  11. TensorFlow中的通信机制——Rendezvous(二)gRPC传输
  12. Android屏幕旋转,赶紧学习一下
  13. php几个时间段去除重复,一个时间段内各地区数据和,发现重复地区不相加
  14. fiddler手机抓包抖音无网问题
  15. 云端服务器跑python代码,断开后台运行
  16. ES数据架构与关系数据库Mysql对比,例如mysql库对应es索引
  17. 2021最稳C/C++学习路线
  18. 苹果手机防盗软件_魅族手机防盗拍照功能可以成功定位,比其他的防盗软件好用...
  19. 【UOJ #108】【APIO 2013】TOLL
  20. 将字母转换为数字A-Z转换为1-26

热门文章

  1. Android 性能优化五大误区和两大疑点!
  2. QQ登录php无限制,PHP实现QQ登录实例代码
  3. 北京54坐标系和西安80坐标系转WGS84坐标系
  4. 程序员升职记-五种种说话套路
  5. MRTG (Multi Router Traffic Grapher)
  6. 弹窗广告关不掉?工信部:用这个方法举报!
  7. 宜信容器云排错工具集
  8. JSP页面传值方法总结
  9. 未定义数组索引:prepay_id
  10. 怎样迅速搭建运营级直播服务器,用直播源码来完成属于你的专属直播服务