软件项目中引用头文件的几种方法和要点转载本文请联系强黄公众号。良好的编程习惯会直接影响代码的质量。在嵌入式C/C++中,引用头文件的方式和方法有很多种,一些细节也会影响到你的代码质量和编译效率。下面说说头文件相关的知识;1.引号""和尖括号<>#include使用引号""或尖括号<>这是规定的。一般来说:系统自带的头文件是用尖括号括起来的,这样编译器就会去系统文件目录中查找。#include用户定义的文件用双引号括起来,编译器会先到用户目录下查找。#include"xxx.h"这里可以参考我之前分享的一篇文章:#include使用引号""和尖括号<>的区别?2.引用头文件路径问题一个项目通常有多个源文件,需要让编译器找到这些存放在不同路径下的源文件,就需要让编译器知道源代码在哪里(路径)。引用头文件路径的方式有很多种,在代码中添加路径,在IDE工具中添加路径,有绝对路径和相对路径之分。下面简单说说:1)。源码不使用集成开发环境(IDE)引用头文件,通常会在源码中添加路径信息,比如在源码文件中引用头文件:#include"/strongerhuang/robot/project/bsp/bsp_uart.h"#include"../bsp/bsp_uart.h"不过,你会发现上面的引用有什么不同吗?一种是绝对路径:#include"/strongerhuang/robot/project/bsp/bsp_uart.h"一种是相对路径:#include"../bsp/bsp_uart.h"2)。IDE工具是指头文件。我们使用的Keil和IAR工具可以不用上面的。为源码添加路径头文件,只需要在工程中配置编译路径即可。例如KeilMDK:通过菜单Project->OptionsforTaget->C/C++:KeilMDK默认为相对(工程文件)路径。IAREWARM类似:通过菜单Project->Options->C/C++Compiler:IAR默认为绝对路径,通常我们需要修改为相对路径。3.头文件相关内容这里顺便提一下关于头文件的几个重要内容。1).防止头文件被重复引用的问题对于老司机来说可能不是问题,但是很多新手不明白什么意思。通常,在一个xxx.h头文件中,会有一段类似下面的代码:#ifndef_XXX_H#define_XXX_H#endif"#"这是一个预处理指令,什么意思?简单的说:如果不包含XXX.h头文件就包含;否则不包括在内(即不重复引用)。2).全局(全部)头文件有些工程师喜欢把一个工程中所有的.h头文件放到一个全局头文件(如global.h)中,然后,每个.c源文件引用这个(全局.h)头文件.这样既有优点也有缺点:优点:简单方便,不用担心因为缺少一个.h文件而导致的错误和警告;缺点:只要修改一个.h,项目就需要全局编译,浪费很多时间;因此,我个人建议不要使用这个全局头文件(global.h)来管理头文件。这种做法只是方便一时,不利于管理。在几个源文件这样的小项目中可能感觉不到什么。但是,如果项目越来越大,尤其是源代码有几十上百个,每个源文件的代码都比较大,如果修改一个.h文件,只能等着慢慢编译。当项目比较大胆时,这种做法可能会让你精神崩溃。
