Keil MDK/MDK-ARM(ARM編譯器)默認情況下會自動包含其安裝目錄下的標準頭文件路徑(如CMSIS庫、設備頭文件等)。具體機制如下:
-
?默認自動包含?:
新建工程或使用設備數據庫選擇芯片型號后,Keil會自動將必需的標準庫頭文件路徑(如<ARM/INC>
目錄下的CMSIS相關頭文件路徑)添加到項目的?包含路徑?中,無需用戶手動添加。 -
?包含路徑查看?:
可在工程選項中確認自動包含的路徑。進入“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自動添加的路徑。 -
?“No Auto Includes”選項的作用?:
- 若勾選此選項(位于“Options for Target” → “C/C++”選項卡),?Keil將取消自動包含安裝目錄下的標準頭文件路徑?。
- 此時,用戶必須?手動?將所有必需的頭文件路徑(包括原本由Keil自動添加的標準路徑)添加到“Include Paths”中,否則編譯時將無法找到標準庫頭文件。
-
?頭文件引用方式的影響?:
- 使用尖括號
#include <header.h>
包含文件時,編譯器?優先?在系統/編譯器指定的路徑(即Keil安裝目錄下的標準路徑)中搜索。 - 使用雙引號
#include "header.h"
包含文件時,編譯器?優先?在當前源文件所在目錄及用戶項目指定的路徑中搜索,若找不到?才會?搜索系統路徑。 - ?自動包含的標準路徑對兩種引用方式均有效?,但
<>
方式更明確地指示使用系統路徑。
- 使用尖括號
?總結:?
- ?√ 默認自動包含:? Keil MDK在創建基于設備數據庫的工程時,?默認會自動包含安裝目錄下的標準庫頭文件路徑?。用戶通常無需手動添加這些路徑即可使用
#include <stm32f10x.h>
等標準頭文件。 - ?? 可關閉自動包含:? 通過勾選“?No Auto Includes?”選項可禁用此行為,禁用后用戶必須手動添加所有必需路徑。
- ?🔍 引用方式優先級:? 包含路徑生效后,使用
<>
會優先在Keil自動包含的系統路徑中查找頭文件;使用""
則優先在用戶項目路徑中查找。