2021-05-27keil中.h文件的建立

本文详细介绍了如何在Keil中创建和使用H文件,包括函数声明、定义文件的组织,以及如何在主函数中调用。通过实例演示了H文件的便捷之处,以及创建.c文件以分离函数定义的技巧。

自己总结的keil中.h文件的建立,只学会了怎么建立.h文件,.h文件只是起到一个声明的作用,使代码看起来更加的美观
第一步:
在已有C文件的基础上新建文件夹
保以.h文件的形式保存
前两行加上最后一行是固定格式
中间部分就可以定义函数部分了,定义结束后就可以在main函数中直接调用了(前提是得在主函数中调用响应的.h文件)
如果嫌在.h文件中定义函数太麻烦,可以创建一个与.h文件相同名字的.c文件将函数的定义放到.c文件下面,.h文件中只用进行声明就可以。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以实现相应的功能了。

Keil 开发环境中,无法找到对应的 `.h` 头文件通常是由以下几类原因导致的: ### 1.文件路径未正确配置 Keil 编译器依赖于项目中配置的包含路径来查找头文件。如果所需的头文件不在这些路径中,编译器将报错,提示找不到头文件。例如,在移植 VL53L0X API 时,如果未将 Windows.h 所在目录添加到 Keil 的包含路径中,就会出现找不到 Windows.h 的问题[^1]。 **解决方法:** - 打开 Keil 项目,进入 `Options for Target` 对话框。 - 在 `C/C++` 选项卡下的 `Include Paths` 中添加头文件所在目录。 - 确保路径为绝对路径或相对于项目目录的相对路径。 ### 2.文件重名导致的引入错误 在某些情况下,不同目录下可能存在同名的头文件,这可能导致编译器引入了错误的头文件,从而引发未定义标识符等错误。例如,在 STM32 移植 FreeRTOS 时,如果 `timers.h` 文件在多个路径下存在,可能导致引入了错误版本,从而导致类型未定义的问题[^3]。 **解决方法:** - 检查头文件名称是否重复,并确保 `#include` 指令中使用具体的路径来区分不同目录下的同名文件,如 `#include "include/timers.h"`。 - 使用预处理器宏定义或条件编译来避免头文件重复引入。 ### 3.文件未正确添加到项目中 在某些开发环境中,即使头文件存在于项目目录中,如果没有将其显式添加到项目文件列表中,也可能导致编译器无法识别头文件。例如,在添加 STC 单片机仿真器驱动时,需要通过 STC-ISP 软件将型号和头文件正确添加到 Keil 项目中[^2]。 **解决方法:** -Keil 的项目管理器中,右键点击 `Source Group`,选择 `Add Existing Files to Group`。 - 将所需的 `.h` 文件添加到项目中,确保其被编译器识别。 ### 4. 编译器版本或配置不兼容 有时,特定头文件可能依赖于编译器的某些特性或标准支持。如果使用的 Keil 编译器版本过旧,或者未启用对应的 C/C++ 标准选项,也可能导致头文件解析失败。 **解决方法:** - 确保使用最新版本的 Keil 编译器。 - 在 `Options for Target -> C/C++` 中检查并启用合适的语言标准,如 C99 或 C11。 ### 5.文件内容本身存在错误 如果头文件内部存在语法错误、宏定义缺失或依赖的其他头文件未正确引入,也可能导致编译器报错。 **解决方法:** - 打开头文件并检查语法是否正确。 - 确保所有依赖的头文件都已正确引入。 - 使用 `#ifndef`, `#define`, `#endif` 来避免头文件重复包含。 ### 6. FreeRTOS 相关配置问题 在移植 FreeRTOS 到 STM32 平台时,除了头文件路径问题,还需要特别注意 `FreeRTOSConfig.h` 文件中的配置。例如,如果 `configTOTAL_HEAP_SIZE` 设置过大,而启动文件中栈空间不足,也会导致编译错误[^3]。 **解决方法:** - 在 `FreeRTOSConfig.h` 中合理设置 `configTOTAL_HEAP_SIZE`。 - 修改启动文件(如 `startup_xxxxxx.s`)中的栈空间大小,以确保堆和栈不会冲突。 ### 示例代码:检查头文件路径是否正确 以下是一个简单的 C 语言代码片段,用于验证头文件是否被正确引入: ```c #include "stdio.h" // 标准输入输出头文件 #include "my_header.h" // 自定义头文件 int main(void) { printf("Hello World\n"); my_function(); // 调用自定义头文件中的函数 return 0; } ``` 确保 `my_header.h` 文件位于 Keil 的包含路径中,并且其内部定义了 `my_function()` 函数。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值