美文网首页
关于头文件

关于头文件

作者: EVE0430 | 来源:发表于2018-01-25 14:37 被阅读0次

本文根据http://www.cnblogs.com/chenchenluo/archive/2011/09/03/2165765.html,摘录并记录一些内容

头文件的基本应用在前面<模块化编程学习>中有所提及,在这里对此进行细究


存储类说明符
Extern:
出现在顶层或块的外部变量函数与变量声明中,表示声明的对象具有静态生存期, 连接程序知道其名字.
Static:
可以放在函数与变量声明中,在函数定义时,只用于指定函数名,而不将函数导出到链接程序,在函数声明中,表示其后边会有定义声明的函数,存储类型static.在数据声明中,总是表示定义的声明不导出到连接程序.

根据上面所述,只要我们在头文件中用extern声明了一个函数play(),接下来无论在哪里调用,连接程序都可以找到。

何时需要使用extern声明一个函数呢?

在.h文件中声明的函数,如果在其对应的.c文件中有定义,那么我们在声明这个函数时,不使用extern修饰符, 如果反之,则必须显示使用extern修饰符.

解释:在《C专家编程》中提过定义与声明的区别:
定义:是一种特殊的声明,它创建了一个对象。
声明:简单的说明了在其他地方创建的对象的名字,它允许你使用这个名字
上面引用的话中,我认为意思仅仅为,在使用的.c文件中如果没有定义,则使用extern来表述。

extern全局变量

extern对象声明告诉编译器对象的类型和名字,对象的内存分配则在别处进行。由于并未在声明中为数组分配内存,所以并不需要提供关于数组长度的信息。这样做还有一个好处,在需要对全局变量的长度进行修改时,不用把所有的引用声明也全部修改了。

宏定义的技巧

比如a.h文件当中有:
#ifdef AAA
int i=0;
#else
int i;
#endif
那么,在a.c文件当中,有如下语句:
......
#define AAA
#include "a.h"
......
而对于其他的任何包含a.h文件的头文件或者.c源文件,只需要直接包含a.h就行了
......
#include "a.h"
......
这样就可以达到在a.c文件当中定义变量一次,而在其他的文件当中声明该变量的目的.
当然了,你完全可以根据自己的需要来决定在哪个需要包含a.h的文件当中定义宏AAA,但> 是我要说的是
在同一个工程的不同的需要包含a.h的文件当中,你只能定义AAA一次,否则在连接这些目> 标文件时会出现
重复定义的错误,即使你的单独目标文件编译没有任何的问题.

相关文章

  • 关于头文件

    本文根据http://www.cnblogs.com/chenchenluo/archive/2011/09/03...

  • GeekBand.重学C++(1)

    0x01. 关于头文件 头文件保护 头文件保护,是为了避免重复包含头文件中的声明和定义,导致重定义错误或者编译器找...

  • 关于预编译头文件

    2009-04-29 对预编译头文件说明如下: 所谓头文件预编译,就是把一个工程(Project)中使用的一些MF...

  • C++竞赛常用的头文件

    根据C++ 竞赛常用的头文件和关于#include 等整理 万能头文件在国外的主流oj,台湾的oj,Codefo...

  • 2020-02-18关于静态库的制作方法

    一、关于framework的封装1.新建 2.修改配置为静态库 3.添加代码 4.配置暴露的头文件 5.头文件导入...

  • C++ Boolan第一周

    1. 关于头文件 做了预处理后可以防止被多次重复引用

  • 关于头文件和库文件

    头文件是指在C/C++编程中,可以写在程序里面,以#include 的形式包含的文件。对于C语言,一般以.h作为扩...

  • iOS代码规范

    关于初始化方法《iOS代码规范:初始化方法》可以看这篇文章 头文件 头文件要写详细⼀一点注释,特别是⼯工具类,要详...

  • 头文件保护符

    头文件应该含有保护符,即使这些头文件不会被其他头文件包含。编写头文件保护符并不困难,而且如果头文件被包含多次,它可...

  • swift桥接头文件 import <xx/xx.h>

    关于swift桥接头文件 import file not found的问题 我想要在swift...

网友评论

      本文标题:关于头文件

      本文链接:https://www.haomeiwen.com/subject/hjjvaxtx.html