嵌入式學習筆記 - 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.pswp.cn/news/907726.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907726.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907726.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是數據驅動?以及我們應如何理解數據驅動?

在談到企業數字化轉型時&#xff0c;很多人都會說起“數據驅動”&#xff0c;比如“數據驅動運營”、“數據驅動業務”等等。 在大家言必稱“數據驅動”的時代背景下&#xff0c;我相信很多人并未深究和思考“數據驅動”的真正含義&#xff0c;只是過過嘴癮罷了。那么&#xff…

C++中全局變量和局部變量的區別

C中全局變量和局部變量的區別 在C&#xff08;以及其他編程語言&#xff09;中&#xff0c;變量的作用域和生命周期是兩個非常重要的概念。全局變量和局部變量在作用域和生命周期上有顯著的區別。下面我將詳細講解全局變量和局部變量的區別&#xff0c;并通過代碼示例來幫助理…

基于RPA技術的ECRobot企業智能體解決方案,打通企業自動化業務流程的最后一公里

在企業的日常運營中&#xff0c;難免會遇到一些繁瑣且重復的任務&#xff0c;這類高頻次、低復雜度的事務性工作往往造成人力資源和成本的浪費。因此如何通過智能化工具實現流程自動化&#xff0c;已經成為企業數字化轉型進程中的共性課題。 RPA技術&#xff1a;自動化賦能企業…

ipv6與p2p的關系

在PCDN&#xff08;P2P內容分發網絡&#xff09;領域&#xff0c;IPv6與PCDN盒子的關系緊密且相互影響&#xff0c;主要體現在以下幾個方面&#xff1a; 一、IPv6的部署推動PCDN盒子普及 地址資源充足 IPv6采用128位地址&#xff0c;解決了IPv4地址枯竭的問題&#xff0c;為PC…

大模型應用開發之預訓練

預訓練是研發大語言模型的第一個訓練階段&#xff0c;通過在大規模語料上進行預訓練&#xff0c;大語言模型可以獲得通用的語言理解與生成能力&#xff0c;掌握較為廣泛的世界知識&#xff0c;具備解決眾多下游任務的性能潛力 一、數據預處理 1. 數據的收集 1&#xff09;通…

[python]Prophet‘ object has no attribute ‘stan_backend‘解決方法

測試環境&#xff1a; prophet1.1.4 寫代碼&#xff1a; from prophet import Prophet modelProphet() print(123) 在anaconda prompt里面沒有報錯&#xff0c;但是打開jupyter notebook會報錯Prophet object has no attribute stan_backend&#xff0c;據此猜測jupyter應該…

【HTML】基礎學習【數據分析全棧攻略:爬蟲+處理+可視化+報告】

- 第 102 篇 - Date: 2025 - 05 - 31 Author: 鄭龍浩/仟墨 文章目錄 HTML 基礎學習一 了解HTML二 HTML的結構三 HTML標簽1 標題2 文本段落3 換行4 加粗、斜體、下劃線5 插入圖片6 添加鏈接7 容器8 列表9 表格10 class類 HTML 基礎學習 一 了解HTML 一個網頁分為為三部分&…

ansible中的inventory.ini 文件詳解

1. 主機定義 主機是 Ansible 管理的最小單元&#xff0c;可以是 IP 或域名&#xff0c;支持直接定義或附加參數。 基礎語法 # 直接定義主機&#xff08;IP 或域名&#xff09; 192.168.1.10 example.com# 定義主機并指定連接參數&#xff08;如端口、用戶等&#xff09; web…

SpringBoot整合MyBatis完整實踐指南

在Java企業級應用開發中&#xff0c;SpringBoot和MyBatis的組合已經成為主流的技術選型方案之一。本文將詳細介紹如何從零開始搭建一個基于SpringBoot和MyBatis的項目&#xff0c;包括環境配置、數據庫設計、實體類創建、Mapper接口編寫以及實際應用等完整流程。 一、環境準備…

【Rust 輕松構建輕量級多端桌面應用】

使用 Tauri 框架構建跨平臺應用 Tauri 是一個基于 Rust 的輕量級框架&#xff0c;可替代 Electron&#xff0c;用于構建高性能、低資源占用的桌面應用。其核心優勢在于利用系統原生 WebView 而非捆綁 Chromium&#xff0c;顯著減小應用體積。 安裝 Tauri 需要先配置 Rust 環境…

【Linux】shell腳本的常用命令

目錄 簡介 一.設置主機名稱 1.1通過文件修改 1.2通過命令修改 二.網絡管理命令nmcli 2.1查看網卡 2.2設置網卡 三.簡單處理字符 3.1seq打印連續字符 3.2printf,echo打印字符 3.3sort排序 3.4uniq冗余處理 3.5cut對字符的截取 四.xargs輸入轉參 簡介 以下命令都是…

解決訪問網站提示“405 很抱歉,由于您訪問的URL有可能對網站造成安全威脅,您的訪問被阻斷”問題

一、問題描述 本來前幾天都可以正常訪問的網站&#xff0c;但是今天當我們訪問網站的時候會顯示“405 很抱歉&#xff0c;由于您訪問的URL有可能對網站造成安全威脅&#xff0c;您的訪問被阻斷。您的請求ID是&#xff1a;XXXX”&#xff0c;而不能正常的訪問網站&#xff0c;如…

頁面輸入數據的表格字段(如 Web 表單或表格控件)與后臺數據庫進行交互時常用的兩種方式

“從頁面輸入數據的表格字段(如 Web 表單或表格控件)在與后臺數據庫進行交互時,常用的有兩種方式:” ?? 兩種方式(操作調用數據庫、綁定數據) ?? 方式1:前端代碼提交數據到后端,再由后端調用數據庫 ?? 原理和邏輯: 用戶在頁面上(比如輸入表單、表格)輸入數據…

非阻塞套接字編程詳解

阻塞與非阻塞套接字對比 傳統阻塞式套接字編程使用ServerSocket和Socket類時,關鍵方法如connect()、accept()、read()、write()都會導致調用線程阻塞,直到操作完成。這種模式存在兩個主要問題: 客戶端線程在等待數據時會被完全阻塞服務端需要為每個客戶端連接創建獨立線程,…

電子電路:初步認識CMOS技術

CMOS&#xff08;Complementary Metal-Oxide-Semiconductor&#xff0c;互補金屬氧化物半導體&#xff09;是一種半導體技術&#xff0c;廣泛應用于集成電路&#xff08;IC&#xff09;的設計和制造中。以下是關于CMOS的詳細說明&#xff1a; 1. 基本概念 技術原理&#xff1a…

【11408學習記錄】考研英語寫作提分秘籍:2013真題邀請信精講+萬能模板套用技巧

邀請信 英語寫作2013年考研英語&#xff08;一&#xff09;真題小作文題目分析寫作思路第一段&#xff1a;第二段&#xff1a;錦囊妙句1&#xff1a;錦囊妙句2&#xff1a;錦囊妙句3&#xff1a;錦囊妙句5&#xff1a;錦囊妙句6&#xff1a;錦囊妙句9&#xff1a;錦囊妙句14&am…

Java 注解與反射(超詳細!!!)

Java 注解與反射&#xff08;超詳細&#xff01;&#xff01;&#xff01;&#xff09; 文章目錄 Java 注解與反射&#xff08;超詳細&#xff01;&#xff01;&#xff01;&#xff09;1.注解1.1內置注解1.1.1 SuppressWarnings注解用法 1.2 元注解1.3自定義注解 2.反射2.1 反…

用nz-tabel寫一個合并表格

用nz-tabel寫一個合并表格 <nz-table #basicTable [nzData]"tableSearchStatus.dataList" nzBordered><thead><tr><th>班級</th><th>姓名</th><th>年齡</th><th>電話</th></tr></thead&…

第6章 放大電路的反饋

本章基本要求 會判&#xff1a;判斷電路中有無反饋及反饋的性質 會算&#xff1a;估算深度負反饋條件下的放大倍數 會引&#xff1a;根據需求引入合適的反饋 會判振消振&#xff1a;判斷電路是否能穩定工作&#xff0c;會消除自激振蕩。 6.1 反饋的概念及判斷 一、反饋的…

ansible template 文件中如果包含{{}} 等非ansible 變量處理

在 Ansible 模板中&#xff0c;如果你的 Python 腳本里有大量 {}、f""、或者其他 Jinja 會誤解析的語法&#xff0c;就需要用 {% raw %}…{% endraw %} 把它們包起來&#xff0c;只在需要替換變量的那一行單獨“放行”。例如&#xff1a; {% raw %} #!/usr/bin/env …