好的编程习惯,会直接影响代码的质量,在嵌入式c/c++中,头文件的引用方式和方法有多种,同时一些细节也会影响你代码质量和编译效率。 下面就来说说与头文件有关的知识;
1
引号“”和尖括号《》
#include使用引号“” 还是 尖括号《》 这个是有规定的。
通常来说:系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。
#include 《xxx.h》
用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找。
#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这种工具,可以不用像上面那样,在源代码中添加路径头文件,只需要在工程中配置编译路径即可。 比如keil mdk:通过菜单 project -》 options for taget -》 c/c++:
keil mdk默认是相对(工程文件的)路径。 这里推荐扩展阅读(工程选项配置)相关的文章:
keil系列教程05_工程目标选项配置(一)
keil系列教程06_工程目标选项配置(二)
iar ewarm类似:通过菜单 project -》 options -》 c/c++ compiler:
iar默认是绝对路径,通常我们需要修改为相对路径。 这里推荐扩展阅读(工程选项配置)相关的文章:
iar系列教程06_工程节点选项配置(一)
iar系列教程07_工程节点选项配置(二)
3
头文件相关内容
这里顺便说下关于头文件的几个重要内容。
1.防止头文件被重复引用
这个问题对于老司机来说,可能不是什么问题,但很多新手却没搞明白是什么意思。
通常,在某xxx.h头文件中,会有类似如下的一部分代码:
#ifndef _xxx_h#define _xxx_h #endif
“#”这是一个预处理指令,什么意思呢? 简单来说就是:如果没有包含xxx.h头文件,就包含;否则不包含(即不重复引用)。 2.全局(全部)头文件有些工程师喜欢把一个工程中所有的.h头文件放在一个全局的头文件(比如 global.h)中,然后,每个.c源文件去引用这个(global.h)头文件。 这样有利也有弊:利:简单方便,不用担心因为漏掉一个 .h 文件而引起错误、警告; 弊:只要修改一个.h,工程就需要全局编译,浪费很多时间; 所以,我个人建议不使用这种全局头文件(global.h)来管理头文件。 这种做法只是方便了一时,也不利于管理,在几个源文件这种小项目中可能没觉得什么。 但是,如果项目越来越大,特别几十上百个源代码,每个源文件代码又比较大的情况下,你修改一个 .h 文件,只能慢慢等待编译。 在项目比较敢的时候,这种做法可能会使你心态奔溃。
原文标题:软件项目中引用头文件的几种方法及要点
文章出处:【微信公众号:strongerhuang】欢迎添加关注!文章转载请注明出处。
ZUK Edge发布会在哪看?12.20联想ZUK Edge新品发布会
轻松高效自动化一体的Inline ECO模块
【喜讯】芯盾时代上榜“2023北京专精特新企业百强”
在系统可编程模拟器件ispPAC10及其应用
推进我国人工智能深入发展的六大关键所在
编程中引用头文件的几种方法及要点
人是AI无限趋近但又永远达不到天花板的存在
中科院核心电子材料取得突破,国产CPU或将全部盘活
光纤连接头操作注意事项及清洁步骤
倍加福推出集成了工业以太网接口和REST API的IUT-F190-B40 UHF读/写头,扩展RFID产品组合
WiFi联盟宣布暂时撤销华为会员资格,WAPI能否取代
谷歌旗下应用通过AR技术 让用户足不出户就能逛遍美术馆
日本四家移动运营商计划在2020年开始商用5G服务
基于TMS320F28XX、UCD8K与HCPL设计数字控制两级DC/AC逆变电源
开年不利,金立总部裁员折射行业焦虑
天猫超会挑集合全网数百家新媒体玩跨界,一大批新奇的联名定制款在路上
探索新能源汽车行业发展新格局 远航汽车以硬核实力智赢未来
基于FPGA驱动的数据总线解决电磁干扰问题
伺服电机的分类、特点及接线图 机器人的工作原理和技术参数
汽车 EMC 问题一览