STM32头文件编写格式 引用方式

STM32头文件编写格式 引用方式,第1张

目录
  • 1 头文件引用方式
  • 2 头文件写法
    • 2.1 文件格式
    • 2.2 代码分析
    • 2.3 作用分析
  • 2 头文件路径配置
  • 3 头文件相对路径引用
    • 3.1 同目录下的头文件引用
    • 3.2 不同目录下头文件引用
    • 3.3 相对路径引用的建议

1 头文件引用方式

我们在编写程序的时候,必然要对头文件进行引用,头文件的引用格式包含以下两种方式:

#include 
#include "main.h"
  • 尖括号一般用于包含标准的库头文件,编译器会去系统配置的库环境变量和者用户配置的路径去搜索,而不会在项目的当前目录去查找。
  • 双引号一般用于包含用户自己编写的头文件,编译器会先在项目的当前目录查找,找不到后才会去系统配置的库环境变量和用户配置的路径去搜索。
2 头文件写法 2.1 文件格式

在自己编写的头文件中,一般需要使用#ifndef # define 和#endif 把头文件的内容包含起来。

#ifndef __LED_H
#define __LED_H

#include "stm32f4xx.h"
void LED_Init(void);//初始化
		 				    
#endif
2.2 代码分析
#ifndef __LED_H
#define __LED_H
//user code
#endif

上面的宏定义是一种配套使用方式,其中,#ifndef是"if not defined"的简写,意为,如果没有通过宏定义#define __LED_H ,定义__LED_H,那么程序将执行,包含在里面的用户代码,此时,程序中再通过宏定义#define __LED_H。

2.3 作用分析

#ifndef是起到了一个防止一个源文件多次包含同一个头文件。
当第一次包含这个头文件时,由于没有宏定义#define __LED_H此时 #ifndef __LED_H 的条件为真,执行#ifndef__LED_H 和 #endif所包含的代码,此时也会执行宏定义#define __LED_H。
当第二次包含该头文件时,由于上次已经定义了#define __LED_H,此时 #ifndef __LED_H 的条件为假,便不会再执行头文件中的内容。
如果没有这种宏定义,当头文件中定义了一个名称为data变量,那么当多次包含这个头文件时,程序就会因为重复定义data变量而报错。

2 头文件路径配置

在使用keil编写单片机程序时,我们都会自己写一些头文件,然后让C文件引用这些头文件,引用前,需要我们对程序进行头文件路径的配置,将头文件的路径包含到程序中。路径包含后,程序中的C文件才可以找到对应的头文件。配置界面如下图所示。

3 头文件相对路径引用

除了在程序软件中包含头文件的路径,我们还可以通过相对路径的写法,包含相对路径下的头文件。

3.1 同目录下的头文件引用

如果C文件和头文件处于同一路径下,那么可以直接引用该头文件。

3.2 不同目录下头文件引用

如果头文件和C文件在不同的路径下,那么,需要通过相对路径的方式,找到文件的位置。

例子:

  • C文件路径: C:\Users\Desktop\STM32F4xx\USER\main.c
  • 头文件路径:C:\Users\Desktop\STM32F4xx\HARDWARE\LED\led.h

当main.c文件想要引用头文件led.h时,需要先退出USER文件,到STM32F4xx文件夹中,在找到HARDWARE下的LED文件中去,引用led.h。
因此在包含此头文件时可以采用一下写法。

#include "..\HARDWARE\LED\led.h" 

其中..\ 表示退出到上一级文件夹中,然后按照Windows路径写法向下找到 led.h这个头文件。

3.3 相对路径引用的建议

虽然使用相对路径引用头文件的方式,免去了配置程序头文件路径的步骤,但是在程序编写时,软件仍会给出报错的提示,提示“fatal error :‘xxx.h’ file not found”.此提示虽然不会影响编译和组建工程报错。当程序最终编写完成后,最好还是将头文件的路径包含到程序工程中。消除此提示。

参考网络资源:
【1】#ifndef详解 - 百度文库
【2】使用头文件(相对路径)、命名头文件、命名空间_shyboyandgirl的博客-CSDN博客_头文件命名规则

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/874697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存