chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言預(yù)處理指令及分類

strongerHuang ? 來源:嵌入式專欄 ? 作者:strongerHuang ? 2020-11-29 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

1

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

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

1. 文件包含

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

包含文件的格式有 #include 后面跟尖括號 《》 和雙引號 “” 之分。兩者的主要差別是搜索路徑的不同。

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

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

2.宏定義

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

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

#define PI 3.1416 //定義無符號宏,或定義符號常量 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ù)處理器輸出指定的錯誤信息,通常用于調(diào)試程序。

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

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

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

2

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

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

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

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

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7646

    瀏覽量

    146099
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2124

    瀏覽量

    77351
  • 預(yù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    10834

原文標(biāo)題:C語言預(yù)處理命令分類和工作原理

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    青翼基于KU115FPGA 高性能數(shù)據(jù)預(yù)處理載板-PCIe信號處理板-FPGA載板

    PCIE702A-2 是一款基于 PCIE 總線架構(gòu)的 KU115 FPGA 高性能 數(shù)據(jù)預(yù)處理平臺,該平臺具有 1 個 FMC+(HPC)接口,1 路 PCIe x8 主機接口,該平臺采用
    的頭像 發(fā)表于 03-17 19:00 ?1016次閱讀
    青翼基于KU115FPGA 高性能數(shù)據(jù)<b class='flag-5'>預(yù)處理</b>載板-PCIe信號<b class='flag-5'>處理</b>板-FPGA載板

    C語言主要特點

    ,源程序短,因此輸入程序時工作量少。 2.運算符豐富,C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括號、賦值和強制類型轉(zhuǎn)換等都作為運算符
    發(fā)表于 01-05 07:41

    Typedef在C語言中的應(yīng)用

    Typedef 在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預(yù)處理器做類似的事。例如,思考一下下面的例子: #define dPS struct s * typedef
    發(fā)表于 12-22 13:53

    C語言C++之間的區(qū)別是什么

    函數(shù)重載,即在同一作用域內(nèi)可以定義多個同名函數(shù),只要它們的參數(shù)列表不同即可。 C語言不支持函數(shù)重載,每個函數(shù)必須具有唯一的標(biāo)識符。 4、異常處理C++內(nèi)置了異常
    發(fā)表于 12-11 06:23

    C/C++條件編譯

    條件編譯是一種在編譯時根據(jù)條件選擇性地包含或排除部分代碼的處理方法。在 C/C++ 中,條件編譯使用預(yù)處理指令 #ifdef、#endif、
    發(fā)表于 12-05 06:21

    C語言特性

    的執(zhí)行效率和資源利用率有著嚴(yán)苛的要求。C 語言生成的代碼簡潔緊湊,能夠在有限的硬件條件下快速運行,滿足嵌入式系統(tǒng)對性能的高要求。例如,在智能家居設(shè)備的控制芯片中,C 語言編寫的程序可以
    發(fā)表于 11-24 07:01

    C語言宏拼接運算符典型使用

    C語言中,##運算符(稱為[size=16.002px]標(biāo)記拼接運算符)用于宏定義中將兩個標(biāo)記(token)拼接成一個新的標(biāo)記。它在預(yù)處理階段處理,常用于動態(tài)生成變量名、函數(shù)名或類型
    發(fā)表于 11-20 08:27

    C語言和單片機C語言有什么差異

    單片機c語言相對于普通C語言增加了一些基本的指令,還有變量的賦值是16進(jìn)制,當(dāng)然單片機c
    發(fā)表于 11-14 07:55

    數(shù)據(jù)預(yù)處理軟核加速模塊設(shè)計

    數(shù)據(jù)拼接操作,其預(yù)處理模塊結(jié)構(gòu)框圖如下圖 模塊最后得到的信號為ddr_q、ddr_clk和ddr_wrreq。ddr_q是并行128bits圖像數(shù)據(jù),ddr_clk是RAM的出口時鐘,同時引出作為下一模塊的數(shù)據(jù)時鐘,ddr_wrreq置高時代表有效數(shù)據(jù)。
    發(fā)表于 10-29 08:09

    基于E203 NICE協(xié)處理器擴展指令

    于流水線的計算單元,即在MCU層面,在編譯器里編寫C語言主函數(shù)中包含指定匯編指令的調(diào)用,完成驅(qū)動的配置。在
    發(fā)表于 10-21 14:35

    基于E203 NICE協(xié)處理器擴展指令2.0

    存儲器讀寫結(jié)果。 調(diào)用協(xié)處理器的方法:擴展一個用RTL級代碼編寫的協(xié)處理器,想個辦法調(diào)用這個獨立于流水線的計算單元,即在MCU層面,在編譯器里編寫C語言主函數(shù)中包含指定匯編
    發(fā)表于 10-21 10:39

    飛凌嵌入式ElfBoard-Vim編輯器之GCC的基本使用

    條件編譯到文件中;編譯:將預(yù)處理的代碼編譯轉(zhuǎn)換為匯編語言;匯編:將匯編語言翻譯成二進(jìn)制文件;鏈接:將匯編出來的多個二進(jìn)制目標(biāo)文件和庫文件進(jìn)行鏈接,生成可執(zhí)行文件。我們可以通過一個簡單的hello.
    發(fā)表于 10-16 09:05

    FPGA 加持,友思特圖像采集卡高速預(yù)處理助力視覺系統(tǒng)運行提速增效

    圖像預(yù)處理是圖像處理關(guān)鍵環(huán)節(jié),可優(yōu)化數(shù)據(jù)傳輸、減輕主機負(fù)擔(dān),其算法可在FPGA等硬件上執(zhí)行。友思特FPGA圖像采集卡憑借FPGA特性,能縮短處理時間、降低延遲,適用于高速接口及實時、大數(shù)據(jù)量場景,可完成多種
    的頭像 發(fā)表于 08-13 17:41 ?1306次閱讀
    FPGA 加持,友思特圖像采集卡高速<b class='flag-5'>預(yù)處理</b>助力視覺系統(tǒng)運行提速增效

    鋰電池制造 | 電芯預(yù)處理工藝的步驟詳解

    電芯預(yù)處理是鋰電池包制造的首要工序,無論是新能源汽車的續(xù)航穩(wěn)定性,還是儲能系統(tǒng)的循環(huán)壽命,其根基都可追溯至預(yù)處理工序?qū)﹄娦疽恢滦缘陌芽?,其核心在于通過系統(tǒng)檢測與篩選消除量產(chǎn)電芯的性能差異,為后續(xù)組裝
    的頭像 發(fā)表于 08-11 14:53 ?2044次閱讀
    鋰電池制造 | 電芯<b class='flag-5'>預(yù)處理</b>工藝的步驟詳解

    深入理解C語言C語言循環(huán)控制

    C語言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無限循環(huán),C語言提供了多種循環(huán)控制語句,如break、continue和
    的頭像 發(fā)表于 04-29 18:49 ?2198次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制