`
tempsitegoogle
  • 浏览: 867929 次
文章分类
社区版块
存档分类
最新评论

嵌入式操作系统内核原理和开发(头文件调整)

 
阅读更多

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

很长一段时间,我个人对头文件的功能了解得不是很明白。虽然在平时的开发中,对于头文件也没有犯过什么大的错误,但是总觉得对头文件这块理解得不是很透彻。所以趁着这次嵌入式开发的机会,好好对头文件这部分的内容进行了分析和总结。下面我们主要从两个方面对头文件进行分析,即头文件是做什么的,头文件编写的过程中要注意些什么?

(1)头文件的作用

其实很多的编程语言是没有头文件的,比如说C#、java语言。为什么呢,因为这些语言数据结构和函数操作是捆绑在一起的。而C语言则不一样,它是把头文件和实现文件分开来的。头文件的内容主要有哪些呢,也就是嵌套头文件、宏定义、数据类型、函数原型定义、static函数等等。

(2)头文件的编写

a)头文件要简洁

很多源文件在编写的时候常常喜欢添加很多的头文件,不管是需要的还是不需要的。可是,我们要知道,头文件的作用主要是定义数据类型和函数类型的。本质上来说,头文件很少会创建实质性的代码,不管是数据段的内容,还是代码段的内容。简洁的头文件不仅有利于快速排除编译故障,还能提高编译的速度。有经验的朋友都知道,源文件的编译错误比较容易解决,而头文件的编译错误常常十分复杂。所以,我们必须在一切可能的条件下保证头文件的简洁。

b)头文件注意互斥性

注意头文件的互斥性,需要我们在开发中养成良好的编程习惯。不管是创建头文件,首先要做的事情就是添加编译宏。看上去这是一个十分不起眼的举动,但是常常可以帮助你减少许多不必要的麻烦。

#ifndef _DATA_H
#define _DATA_H

#endif


c)全局变量不要在头文件里面定义,如果是外部引用,必须添加上extern

extern int g_Data; 

d)不要在头文件里面实现函数,如果要实现,也必须要添加static

static int add(int a, int b)
{
	return a + b;
}


e)头文件当中如果需要嵌入别的头文件,那么只是为了引用另外一个头文件的数据结构

f)头文件中引用的数据类型如果没有说明,那么在被源文件引用的时候,只要保证其他的头文件存在这个数据类型定义即可

g)源文件引用头文件的时候需要注意头文件的顺序,有的时候顺序变了,可能编译就失败了。原因就是之前后面头文件中定义的数据类型找不到出处了

h)某些工程没有把头文件和源文件绑定在一起,修改头文件必须删除工程重新编译

i)头文件的存在只是为了源文件才存在的,如果没有必要不要写头文件。要写,影响范围也要控制在最小的范围内

j)如果头文件定义了数据结构,那么需要嵌入引用头文件,反之如果只是指针,声明一下即可,比如说

struct _Data;
typedef struct _Data Data;

k)如果有可能经常整理自己的头文件,全部删除再一个一个添加,这样就知道哪些是我们需要的,哪些不是

l)对于某些宏,如果不确定文件本身是在哪里定义的,可以在源文件中再定义一次,这样编译器就会精确提示我们原来这个宏是在那里定义的

好了,差不多就这么多了。

分享到:
评论

相关推荐

    pSOS操作系统介绍.doc

    pSOSystem 操作系统 概述 pSOSystem 操作系统是一个高性能、高度模块化的实时操作系统,他完整的提供了基于开放系统标 准的多任务环境,被广泛应用于嵌入式微处理器程序开发。pSOSystem实时多任务操作系 统内核是以...

    基于LPC2210的嵌入式系统开发方案.pdf

    但由于嵌入式硬件系统和软件系统的巨大差异和多样性,且对实时性和程序运行效率的要求都非常高,对于当前嵌入式系统的开发只能基于某一特定硬件和操作系统平台实现代码的直接复用,跨平台复用必须经过移植和修改....

    STM32嵌入式系统开发实战指南 FreeRTOS与LwIP联合移植Part1[机械工业出版社]

    第7章 FreeRTOS嵌入式操作系统 7.1 FreeRTOS特色 7.2 任务管理 7.2.1 任务函数 7.2.2 基本任务状态 7.2.3 任务创建 7.2.4 任务的优先级 7.2.5 非运行状态 7.2.6 空闲任务及回调函数 7.2.7 改变任务优先级 7.2.8 删除...

    嵌入式Linux系统移植步步通

    2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux操作系统 ........................................................

    WinCE学习资料.part1

    微软Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)... 实时系统的开发者能够使用,关于VDFF 5.0 的嵌入式工具包,以把操作系统转移到特定的平台,并为这个平台开发附加设备驱动器和实时功能。

    WinCE.part2

    微软Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)... 实时系统的开发者能够使用,关于VDFF 5.0 的嵌入式工具包,以把操作系统转移到特定的平台,并为这个平台开发附加设备驱动器和实时功能。

    WinCE.part3

    微软Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)... 实时系统的开发者能够使用,关于VDFF 5.0 的嵌入式工具包,以把操作系统转移到特定的平台,并为这个平台开发附加设备驱动器和实时功能。

    linux内核 0.11版本源码 带中文注释

    // 如果定义了__LIBRARY__,则还包括系统调用号和内嵌汇编代码_syscall0()等。 #include <time.h> // 时间类型头文件。其中最主要定义了tm 结构和一些有关时间的函数原形。 /* * we need this inline - forking ...

    嵌入式系统/ARM技术中的linux的根目录下各个目录的基本含义

    内容/bin 为得到最小的系统操作性所需要的那些命令/boot 内核和加载内核所需的文件/dev 终端、磁盘等设备项/etc 关键的启动文件和配置文件/lib c编译器的库和部分c编译器/opt 可选,附加的应用软件包/proc 所有正在...

    宋劲彬的嵌入式C语言一站式编程

    2.4. 文件和目录操作的系统函数 3. VFS 3.1. 内核数据结构 3.2. dup和dup2函数 30. 进程 1. 引言 2. 环境变量 3. 进程控制 3.1. fork函数 3.2. exec函数 3.3. wait和waitpid函数 4. 进程间通信 4.1. 管道 4.2. 其它...

    学ARM和学单片机一样简单12

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单4

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单15

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单3

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单9

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单11

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单7

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单5

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

    学ARM和学单片机一样简单13

    2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章 测试程序讲解 一、整板测试 (33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot...

Global site tag (gtag.js) - Google Analytics