当前位置: 首页 > article >正文

嵌入式学习笔记 - keil安装目录下的头文件自动包含问题

Keil MDK/MDK-ARM(ARM编译器)默认情况下会自动包含其安装目录下的标准头文件路径(如CMSIS库、设备头文件等)。具体机制如下:

  1. 默认自动包含‌:
    新建工程或使用设备数据库选择芯片型号后,Keil会自动将必需的标准库头文件路径(如<ARM/INC>目录下的CMSIS相关头文件路径)添加到项目的‌包含路径‌中,无需用户手动添加。

  2. 包含路径查看‌:
    可在工程选项中确认自动包含的路径。进入“Options for Target” → “C/C++”选项卡 → “Include Paths”栏,通常能看到类似C:\Keil_v5\ARM\ARMCC\include(编译器标准库)和C:\Keil_v5\ARM\Packs\ARM\CMSIS\<version>\CMSIS\Core\Include(CMSIS核心)等由Keil自动添加的路径。

  3. “No Auto Includes”选项的作用‌:

    • 若勾选此选项(位于“Options for Target” → “C/C++”选项卡),‌Keil将取消自动包含安装目录下的标准头文件路径‌。
    • 此时,用户必须‌手动‌将所有必需的头文件路径(包括原本由Keil自动添加的标准路径)添加到“Include Paths”中,否则编译时将无法找到标准库头文件。
  4. 头文件引用方式的影响‌:

    • 使用尖括号#include <header.h>包含文件时,编译器‌优先‌在系统/编译器指定的路径(即Keil安装目录下的标准路径)中搜索。
    • 使用双引号#include "header.h"包含文件时,编译器‌优先‌在当前源文件所在目录及用户项目指定的路径中搜索,若找不到‌才会‌搜索系统路径。
    • 自动包含的标准路径对两种引用方式均有效‌,但<>方式更明确地指示使用系统路径。

总结:

  • √ 默认自动包含:‌ Keil MDK在创建基于设备数据库的工程时,‌默认会自动包含安装目录下的标准库头文件路径‌。用户通常无需手动添加这些路径即可使用#include <stm32f10x.h>等标准头文件。
  • ⚠ 可关闭自动包含:‌ 通过勾选“‌No Auto Includes‌”选项可禁用此行为,禁用后用户必须手动添加所有必需路径。
  • 🔍 引用方式优先级:‌ 包含路径生效后,使用<>会优先在Keil自动包含的系统路径中查找头文件;使用""则优先在用户项目路径中查找。
http://www.lryc.cn/news/2394874.html

相关文章:

  • word批量导出visio图
  • 把数据库做得能扩展:Aurora DSQL 的故事
  • 全面解析:npm 命令、package.json 结构与 Vite 详解
  • 【本地部署】 Deepseek+Dify创建工作流
  • Rust 配置解析`serde` + `toml`
  • linux进程用户态内存泄露问题从进程角度跟踪举例
  • 数据结构-图的应用,实现环形校验和拓扑排序
  • 交换机 路由器
  • 某乎x-zse-96 破解(补环境版本)
  • VSCode+Cline 安装配置及使用说明
  • Java中Redis面试题集锦(含过期策略详解)
  • Maven 安装与配置指南(适用于 Windows、Linux 和 macOS)
  • android 媒体框架之MediaCodec
  • 堆与堆排序及 Top-K 问题解析:从原理到实践
  • Linux中检查当前用户是不是root
  • 软件锁:守护隐私,安心无忧
  • 无人机桥梁3D建模、巡检、检测的航线规划
  • 项目:贪吃蛇实现
  • 【Java基础05】面向对象01
  • 设计模式:观察者模式 - 实战
  • 8.8 Primary ODSA service without ODSA Portal
  • YOLOv8 移动端升级:借助 GhostNetv2 主干网络,实现高效特征提取
  • 国产化Word处理控件Spire.Doc教程:在 C# 中打印 Word 文档终极指南
  • java的vscode扩展插件
  • 谷歌:贝叶斯框架优化LLM推理反思
  • Qt SQL模块基础
  • [9-3] 串口发送串口发送+接收 江协科技学习笔记(26个知识点)
  • java 微服务中,微服务相互调用 feign 和flux 如何选择
  • 如何在Qt中绘制一个带有动画的弧形进度条?
  • 参加技术会议,为程序人生的职业生涯成长添砖加瓦