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自动包含的系统路径中查找头文件;使用""则优先在用户项目路径中查找。
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐