extern实现源文件(头文件)之间变量和函数的引用
来源:互联网 发布:笨办法学python pdf 编辑:程序博客网 时间:2024/05/22 16:46
在一个C工程中,会有很多源文件,因此当在一个源文件中调用另一个源文件中的函数或者使用另一个源文件中定义的变量和结构体时,如何保证函数和变量的可见性呢?
1.结构体和变量的调用
下面是看到的关于结构体中的使用:http://blog.csdn.net/Fortware/article/details/44208309?locationNum=10
总结下来就是:包含头文件之后,定义的结构体变量必须用extern声明。
//比如在b.c中想使用a.h中的结构体,步骤如下:#include “a.h” // 1.包含需要的头文件struct test c; // 2.先定义一个结构体变量(定义,不是声明)extern struct test c; // 3.声明要调用的结构体变量是全局的外部变量int main(){// 4.接下来就可以对结构体变量c进行赋值了c.a = 1;c.b = 2;}
2.函数的调用
函数声明方法时,可用extern声明,也可省略extern,
a.c文件中: double squ(double x) { return x*x; } b.c文件中: #include<stdio.h> extern double squ(double x); //这里不加extern运行也没有问题,一般还是加上 int main() { printf("%f",squ(3.0)); return 0; }
为什么方法可以不加extern而变量必须加呢?原因如下:
函数声明主要是给链接器一个明确的hint,从而在匹配函数名字以后还能检查一下类型是否正确。至于extern
关键字,对于函数声明本身是无所谓的,反正末尾一个分号编译器就懂了,能识别出来这是个声明而不是定义;只是对于变量的声明,没它就不行。
C标准里是怎么要求的我不确定,不过建议是,对于本文件的函数不加extern
,外部文件的加上,这样可以给读源码的人一个hint。一般来说,声明都是放在头文件里的,这样你不用在所有用到它的 .c
文件里都写上一大堆声明,而只需要引入一个头文件,也避免声明得和实现不一致(头文件通常和实现一起分发的)。
0 0
- extern实现源文件(头文件)之间变量和函数的引用
- 关于extern以及源文件和头文件的应用
- extern、头文件、源文件与编译和链接
- 定义和声明的区别,它们在头文件、源文件中的位置,extern的用法
- 编程一点心得-extern 变量 头文件重复引用
- 头文件和源文件
- 头文件和源文件
- 关于extern关键字和程序中源文件之间的关系
- C++ 文件头和源文件之间的关系以及程序设计的基本原则
- C++学习(七)头文件和源文件的关系
- 头文件和源文件关联的问题
- 头文件和源文件关联的问题
- 头文件和源文件的关系
- 头文件和源文件的区别
- 头文件和源文件的关系
- 头文件和源文件的关系
- 关于头文件和源文件的分别
- 关于头文件和源文件的分别
- Poedu_C语言_lesson24_20161006_字符串处理函数_fgets与gets
- 优化android studio编译效率的方法
- Oracle 11gR2_database的安装
- Git使用方法
- 加了absolute或者fixed float:right 是不起作用的
- extern实现源文件(头文件)之间变量和函数的引用
- mysql备份和恢复的类型简介
- 队列,链队列,循环队列
- 算法学习-字符串的全排列
- 如何设置css3中placeholder的字体颜色
- Android Studio获取SHA1证书方法
- java 获取真实ip
- C++11实现简单生产者消费者模式
- 微信小程序开发总结