日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 21ic電子網(wǎng)
[導(dǎo)讀]C語言編程過程中,經(jīng)常會(huì)用到如 #include、#define 等指令,這些標(biāo)識(shí)開頭的指令被稱為預(yù)處理指令,預(yù)處理指令由預(yù)處理程序(預(yù)處理器)操作。相比其他編程語言,C/C++ 語言更依賴預(yù)處理器,故在閱讀或開發(fā) C/C++ 程序過程中,可能會(huì)接觸大量的預(yù)處理指令。

C語言編程過程中,經(jīng)常會(huì)用到如 #include、#define 等指令,這些標(biāo)識(shí)開頭的指令被稱為預(yù)處理指令,預(yù)處理指令由預(yù)處理程序(預(yù)處理器)操作。


相比其他編程語言,C/C++ 語言更依賴預(yù)處理器,故在閱讀或開發(fā) C/C++ 程序過程中,可能會(huì)接觸大量的預(yù)處理指令。



1

預(yù)處理指令及分類
C/C++ 程序中的源代碼中包含以 # 開頭的各種編譯指令,這些指令稱為預(yù)處理指令。預(yù)處理指令不屬于 C/C++ 語言的語法,但在一定意義上可以說預(yù)處理擴(kuò)展了 C/C++。

ANSI C 定義的預(yù)處理指令主要包括:文件包含、宏定義、條件編譯和特殊控制等 4 類。


1. 文件包含
文件包含:#include 是 C 程序設(shè)計(jì)中最常用的預(yù)處理指令。例如,幾乎每個(gè)需要輸入輸出的 C 程序,都要包含 #include 指令,表示把 stdio.h 文件中的全部內(nèi)容,替換該行指令。

包含文件的格式有 #include 后面跟尖括號(hào) <> 和雙引號(hào) "" 之分。兩者的主要差別是搜索路徑的不同。

尖括號(hào)形式:如 #include,預(yù)處理器直接到系統(tǒng)目錄對(duì)應(yīng)文件中搜索 math.h 文件,搜索不到則報(bào)錯(cuò)。系統(tǒng)提供的頭文件一般采用該包含方式,而自定義的頭文件不能采用該方式。

雙引號(hào)形式:如 #include"cal.h",首先到當(dāng)前工作目錄下查找該文件,如果沒有找到,再到系統(tǒng)目錄下查找。包含自定義的頭文件,一般采用該方式。雖然系統(tǒng)頭文件采用此方式也正確,但浪費(fèi)了不必要的搜索時(shí)間,故系統(tǒng)頭文件不建議采用該包含方式。

2.宏定義
宏定義:包括定義宏 #define 和宏刪除 #undef。

以 #define 開頭,可以定義無參數(shù)宏和帶參的宏定義。程序中經(jīng)常使用無參宏定義來定義符號(hào)常量。例如:
#define PI 3.1416 //定義無符號(hào)宏,或定義符號(hào)常量 PI

#undef 表示刪除已定義的宏,例如:
#undef PI //刪除前面該宏的定義

3.條件編譯
條件編譯:主要是為了有選擇性地執(zhí)行相應(yīng)操作,防止宏替換內(nèi)容(如文件等)的重復(fù)包含。

常見的條件編譯指令有 #if、#elif、#else、#endif、#ifdef、#ifndef。

4.特殊控制
特殊控制:ANSI C 還定義了特殊作用的預(yù)處理指令,如 #error、#pragma。

#error:使預(yù)處理器輸出指定的錯(cuò)誤信息,通常用于調(diào)試程序。

#pragma:是功能比較豐富且靈活的指令,可以有不同的參數(shù)選擇,從而完成相應(yīng)的特 定功能操作。調(diào)用格式為:#pragma 參數(shù)。

其中,參數(shù)可以有 message 類型、code_seg、once、warning、pack 等。通常使用如下的預(yù)處理指令來設(shè)定內(nèi)存以 n 字節(jié)對(duì)齊方式。

#pragma pack (n) //其中 n 稱為對(duì)齊系數(shù),取 1、2、4、8...


2

預(yù)處理器及其工作原理

C預(yù)處理器(C Pre-Processor)也常簡寫為 CPP,是一個(gè)與 C 編譯器獨(dú)立的小程序,預(yù)編譯器并不理解 C 語言語法,它僅是在程序源文件被編譯之前,實(shí)現(xiàn)文本替換的功能。


目前預(yù)編譯器巳集成到集成開發(fā)環(huán)境中,一般并沒有執(zhí)行預(yù)處理操作的選項(xiàng),而包含在了編譯操作中,即選擇編譯操作時(shí),首先調(diào)用的是預(yù)處理器,處理源程序文件中的預(yù)處理指令,預(yù)處理器的輸出再送給編譯器,編譯器從 C 語言語法角度檢查程序是否正確,如果正確,則生成目標(biāo)代碼文件或機(jī)器指令文件。

C 預(yù)處理器及 C 編譯器的執(zhí)行順序及輸入輸出文件類型,如圖所示:

干貨!C語言預(yù)處理命令分類和工作原理


來源:http://c.biancheng.net/view/286.html

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!

21ic電子網(wǎng)

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

隨著現(xiàn)代家庭生活方式不斷升級(jí),廚房已不再只是功能空間,而逐漸成為融合審美表達(dá)、健康管理與智能體驗(yàn)的重要場域。消費(fèi)者在關(guān)注空間整體性的同時(shí),也對(duì)食材儲(chǔ)存的安全性、潔凈度以及使用便利性提出了更高要求?;趯?duì)中國家庭真實(shí)使用場...

關(guān)鍵字: 冰箱 嵌入式

在嵌入式系統(tǒng)、工業(yè)物聯(lián)網(wǎng)等各類電子設(shè)備中,UART與網(wǎng)口是兩種應(yīng)用廣泛的通信接口,前者作為經(jīng)典的串行通信接口,承擔(dān)著簡單設(shè)備互聯(lián)、調(diào)試日志傳輸?shù)然A(chǔ)任務(wù),后者則專注于高速、遠(yuǎn)距離的數(shù)據(jù)交互,是設(shè)備接入網(wǎng)絡(luò)、實(shí)現(xiàn)大數(shù)據(jù)量傳...

關(guān)鍵字: 嵌入式 通信接口 網(wǎng)口通訊

在軟件開發(fā)領(lǐng)域,設(shè)計(jì)模式被譽(yù)為“解決特定問題的最佳實(shí)踐”,但在嵌入式開發(fā)中,它卻常常處于“邊緣地帶”。許多嵌入式工程師職業(yè)生涯中可能從未刻意使用過設(shè)計(jì)模式,甚至認(rèn)為這些“軟件工程理論”與單片機(jī)、傳感器、實(shí)時(shí)系統(tǒng)等硬件緊密...

關(guān)鍵字: 嵌入式 設(shè)計(jì)模式

在居住結(jié)構(gòu)持續(xù)演進(jìn)與消費(fèi)需求不斷升級(jí)的背景下,中國家庭廚房正經(jīng)歷從“功能集合”向“系統(tǒng)空間”的深層轉(zhuǎn)變。廚房不再只是烹飪的場所,而逐漸成為融合效率、健康、美學(xué)與家庭互動(dòng)的重要生活空間?;趯?duì)這一趨勢(shì)的長期洞察,西門子家電...

關(guān)鍵字: 嵌入式 蒸玲瓏

在物聯(lián)網(wǎng)設(shè)備、工業(yè)控制系統(tǒng)和智能家居等嵌入式場景中,輕量級(jí)WEB服務(wù)器扮演著核心角色。它們不僅需要滿足資源受限環(huán)境下的性能需求,還需兼顧安全性、可擴(kuò)展性和開發(fā)效率。本文從資源占用、功能特性、適用場景三個(gè)維度,對(duì)比分析六大...

關(guān)鍵字: 嵌入式 WEB服務(wù)器

在嵌入式軟件開發(fā)工具領(lǐng)域,一場悄然的變革正在發(fā)生。隨著全球軟件行業(yè)向訂閱制轉(zhuǎn)型,嵌入式軟件開發(fā)工具的授權(quán)模式也迎來了重要調(diào)整。市場上的嵌入式軟件開發(fā)工具基本可以分為三類:商用開發(fā)工具,開源開發(fā)工具和廠商私有開發(fā)工具,其中...

關(guān)鍵字: 嵌入式 MCU RISC-V

在資源受限的嵌入式系統(tǒng)中,傳統(tǒng)調(diào)試工具(如JTAG)往往成本高昂且占用引腳資源。本文介紹一種基于串口的低成本調(diào)試方案,通過自定義協(xié)議實(shí)現(xiàn)內(nèi)存數(shù)據(jù)的實(shí)時(shí)監(jiān)控,硬件成本可降低80%以上,特別適用于8/16位MCU開發(fā)場景。

關(guān)鍵字: 嵌入式 串口 內(nèi)存數(shù)據(jù)

隨著國家家電以舊換新補(bǔ)貼政策的持續(xù)推進(jìn),綠色節(jié)能、品質(zhì)升級(jí)正成為越來越多家庭的新年煥新關(guān)鍵詞。面對(duì)消費(fèi)者在居住空間、生活效率與健康體驗(yàn)上的多元需求,西門子家電圍繞新春煥新節(jié)點(diǎn),正式開啟“開門紅”煥新季,通過國家補(bǔ)貼與企業(yè)...

關(guān)鍵字: 嵌入式 咖啡機(jī) 嵌飲機(jī)

高效的嵌入式邊緣AI 應(yīng)用計(jì)算機(jī)模塊解決方案

關(guān)鍵字: 處理器 嵌入式 邊緣AI

設(shè)計(jì)人員通過瑞薩遠(yuǎn)程板場可在新MCU發(fā)布首日免費(fèi)開始編程和編碼

關(guān)鍵字: MCU 嵌入式 電路板
關(guān)閉