首先要搞清楚的是.h头文件中都是一些声明性的语句,干的是不分配内存的事,所以头文件中有对函数的声明,有defeinse语句,有没有实例化的结构体定义,但是没有对变量的定义(比如 int a),有的只是对外变量的声明(extern int a)。

对于一个文件中调用另一个文件的全局变量,因为全局变量一般定义在原文件.c中,我们不能用#include包含源文件而只能包含头文件,所以常用的方法是用extern  int a来声明外部变量。   还有一种方法是可以是在a.c文件中定义了全局变量int global_num ,可以在a.h头文件中写extern int global_num 这样其他源文件可以通过include a.h来声明她是外部变量就可以了

对于一个文件中调用另一个文件中的函数,最常用的是在.h头文件中声明函数,其他源文件可以通过#include该文件来声明函数并且在调用该函数时自动调到函数地址处执行。  也可以是在a.c中定义了该函数int fun   在b.c中用extern int  fun来声明该函数是外部的 然后调用。

搞清楚概念的关键是理解声明,定义的区别,头文件的作用,还有变量和函数的不同是 int fun();和 extern int fun()都是声明 而变量是int a;是定义 extern int a 是声明。 用extern int  fun()只是更明确点。

此外,extern修饰符可用于指示C或者C++函数的调用规范。比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同。

转载于:https://www.cnblogs.com/skykang/archive/2013/05/10/3071446.html

文件间调用变量(extern,include)[转]相关推荐

  1. 中两个查询结果相减_位移差?应力差?利用fish语言实现结果文件间运算。

    重要通知:本公众号已开通赞赏功能,各位读者老爷有钱的可以给呱太捧个钱场!推荐使用微信PC端进行阅读,以避免命令流显示畸变.文章所附命令流均可直接复制到FLAC3D 6.0中运行,若有报错,请手动重输命 ...

  2. html img调用js,html调用js变量 如何在html中输出js文件中的变量

    html页面代码中怎么调用js变量?html页面代码中怎么调用js变量,例如 在html代码中插入js代码: a=取浏览你把index1.js 中的onReady 去掉,把index1.js改成 fu ...

  3. JavaScript文件中调用AngularJS内部方法或改变$scope变量

    需要在其他JavaScript文件中调用AngularJS内部方法或改变$scope变量,同时还要保持双向数据绑定: 首先获取AngularJS application: 方法一:通过controll ...

  4. python 在一个py文件中调用另一个py文件中的变量以及一个有趣的问题

    python 在一个py文件中调用另一个py文件中的变量以及一个有趣的问题 1.在一个py文件中调用另一个py文件中的变量 新建一个py文件,记为t1.py # t1.py m = 2 n = 1 a ...

  5. Effective C++笔记_条款31将文件间的编译依存关系降至最低

    Effective C++笔记_条款31将文件间的编译依存关系降至最低 这个章节,读了两遍还是不是很清楚,有一种没法和作者沟通的感觉,看来我还是一个C++的初学者呀.好吧,不多说了,回归主题,今天的笔 ...

  6. 关于头文件,全局变量,extern,static

    2019独角兽企业重金招聘Python工程师标准>>> 今天在复习C的时候,看到关于#include语句的一个解释,如果B 中 #include A,就是将文件A拷贝到#includ ...

  7. 在.c文件中调用cuda函数

    在.c文件中调用cuda函数 2014-04-19 17:17 446人阅读 评论(0) 收藏 举报 分类: cuda编程(1) 版权声明:本文为博主原创文章,未经博主允许不得转载. 问题描述:假设在 ...

  8. C++不同文件中相同变量的共享

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105111923 不 ...

  9. Linux下gcc编译生成动态链接库*.so文件并调用它

    动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一 ...

  10. tp框架中引入php文件,Laravel框架及ThinkPHP框架超级简单的公共文件引入(保留变量)...

    为什么要把两个框架放在一起来说呢?额...因为TP5.1.x与Laravel实在是太像了,本文主要讲述关于大家顶部及底部文件引入的问题. 但是如果顶部和尾部只是单纯的html代码还好说,但是里面通常有 ...

最新文章

  1. logisitic和softmax函数
  2. spring boot actuator工作原理之http服务暴露源码分析
  3. 手机耗电统计app_Android O新特性:精确统计APP电量消耗
  4. python生成配置文件config_Python configparser模块封装及构造配置文件
  5. Java 多线程(并发)
  6. oracle系列(二)oracle体系结构和用户管理
  7. C++ 对象模型(二)
  8. HCIP-RS-GRE
  9. oracle wmsys.wm_concat函数
  10. 支持udp转发的云服务器,云服务器转发udp原理
  11. 将Sublime打造成超强前端IDE
  12. iPhone手机微信下载的文档传输到win10系统桌面
  13. TMS320C64x DSP L1 L2 Cache架构(1)——C64x Cache Architecture
  14. winedt103系统找不到指定文件_latex排版(CTeX winEdit输出“系统找不到指定的文件”的终极解决办法)...
  15. 视频教程-excel提高效率的实用技巧-Office/WPS
  16. 数组对头删除php,php学习 数组课件
  17. 联想笔记本如何安装内存条——附安装结果检查方法及问题解决方法
  18. 计算机电源测试电压,使用万用表测试电脑电源好坏的方法
  19. 【人脸识别】调用百度AI开放平台人脸识别接口,获取图片结果
  20. 有了Forter ,中国的跨境电商们可以安心做生意了

热门文章

  1. 自定义Mac睡眠时间,保持运行状态
  2. JS有哪几种传参方式?
  3. 比Python、Java更快的 Go 语言,能否称霸?
  4. 函数除颤/节流提高性能 + 原生实现滚动时到视口时展现
  5. JQuery基础学习笔记(1)
  6. ECSHOP首页调用文章内的缩略图
  7. python类库26[web2py之介绍]
  8. iMazing2注册机如何备份苹果手机的通话记录?
  9. 推荐一个可以减少开发量50%的插件!
  10. 5亿次Web攻击 怎么防住的?