一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

strongerHuang ? 來(lái)源:嵌入式專欄 ? 作者:strongerHuang ? 2020-11-29 10:14 ? 次閱讀

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

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

1

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

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

1. 文件包含

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

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

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

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

2.宏定義

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

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

#define PI 3.1416 //定義無(wú)符號(hào)宏,或定義符號(hào)常量 PI

#undef 表示刪除已定義的宏,例如:

#undef PI //刪除前面該宏的定義

3.條件編譯

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

常見(jiàn)的條件編譯指令有 #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ù)處理指令來(lái)設(shè)定內(nèi)存以 n 字節(jié)對(duì)齊方式。

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

2

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

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

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

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

責(zé)任編輯:lq

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

    關(guān)注

    180

    文章

    7628

    瀏覽量

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

    關(guān)注

    22

    文章

    2116

    瀏覽量

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

    關(guān)注

    0

    文章

    33

    瀏覽量

    10583

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    Verilog HDL語(yǔ)言C語(yǔ)言一樣也提供了編譯預(yù)處理的功能?!熬幾g預(yù)處理”是Verilog HDL編譯系統(tǒng)的一個(gè)組成部分。Verilog
    的頭像 發(fā)表于 03-27 13:30 ?345次閱讀
    FPGA Verilog HDL語(yǔ)法之編譯<b class='flag-5'>預(yù)處理</b>

    全套C語(yǔ)言培訓(xùn)資料—PPT課件

    全套C語(yǔ)言培訓(xùn)資料,共427頁(yè),13個(gè)章節(jié):C語(yǔ)言概述、程序的靈魂—算法、數(shù)據(jù)類型 & 運(yùn)算符與表達(dá)式、順序程序設(shè)計(jì)、選擇結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)控制、數(shù)組、函數(shù)、
    發(fā)表于 03-12 14:50

    如何優(yōu)化自然語(yǔ)言處理模型的性能

    優(yōu)化自然語(yǔ)言處理(NLP)模型的性能是一個(gè)多方面的任務(wù),涉及數(shù)據(jù)預(yù)處理、特征工程、模型選擇、模型調(diào)參、模型集成與融合等多個(gè)環(huán)節(jié)。以下是一些具體的優(yōu)化策略: 一、數(shù)據(jù)預(yù)處理優(yōu)化 文本清洗
    的頭像 發(fā)表于 12-05 15:30 ?1317次閱讀

    Minitab 數(shù)據(jù)清理與預(yù)處理技巧

    Minitab是一款功能強(qiáng)大的統(tǒng)計(jì)分析和質(zhì)量管理軟件,在數(shù)據(jù)分析過(guò)程中,數(shù)據(jù)清理與預(yù)處理是至關(guān)重要的環(huán)節(jié)。以下是一些在Minitab中進(jìn)行數(shù)據(jù)清理與預(yù)處理的技巧: 一、數(shù)據(jù)導(dǎo)入與格式調(diào)整 導(dǎo)入數(shù)據(jù)
    的頭像 發(fā)表于 12-02 16:06 ?1135次閱讀

    C語(yǔ)言關(guān)鍵字分別發(fā)生在哪個(gè)階段

    以下C語(yǔ)言關(guān)鍵字,分別發(fā)生在哪個(gè)階段? 第一個(gè),define。 首先得糾正一下,define 并不是C語(yǔ)言里面的關(guān)鍵字,即使加了井號(hào),也不是。 define 屬于
    的頭像 發(fā)表于 11-24 10:31 ?441次閱讀

    C語(yǔ)言生成可執(zhí)行二進(jìn)制文件的具體過(guò)程

    C語(yǔ)言源碼到生成可執(zhí)行文件的過(guò)程通常包括預(yù)處理(Preprocessing)、編譯(Compilation)、匯編(Assembly)、鏈接(Linking)等多個(gè)步驟,每個(gè)步驟都有其特定的任務(wù)
    的頭像 發(fā)表于 10-21 14:30 ?1246次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>生成可執(zhí)行二進(jìn)制文件的具體過(guò)程

    處理指令的獲取過(guò)程

    處理指令的獲取是計(jì)算機(jī)執(zhí)行程序過(guò)程中的關(guān)鍵環(huán)節(jié),它決定了微處理器如何對(duì)數(shù)據(jù)和指令進(jìn)行處理。以下將詳細(xì)闡述微
    的頭像 發(fā)表于 10-05 15:16 ?747次閱讀

    C55x CSL音頻預(yù)處理

    電子發(fā)燒友網(wǎng)站提供《C55x CSL音頻預(yù)處理.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:30 ?0次下載
    <b class='flag-5'>C</b>55x CSL音頻<b class='flag-5'>預(yù)處理</b>

    hex文件如何查看原c語(yǔ)言代碼

    處理器可以直接執(zhí)行的指令,而 C 語(yǔ)言代碼則是人類可讀的高級(jí)編程語(yǔ)言代碼。 然而,如果你想要從 .hex 文件中獲取一些有用的信息或者對(duì)程
    的頭像 發(fā)表于 09-02 10:37 ?3969次閱讀

    圖像識(shí)別技術(shù)包括自然語(yǔ)言處理

    計(jì)算機(jī)視覺(jué)技術(shù)對(duì)圖像進(jìn)行處理、分析和理解,從而實(shí)現(xiàn)對(duì)圖像中的目標(biāo)、場(chǎng)景、行為等信息的識(shí)別和理解。圖像識(shí)別技術(shù)包括圖像預(yù)處理、特征提取、分類器設(shè)計(jì)、模型訓(xùn)練等多個(gè)環(huán)節(jié)。 1.2 自然語(yǔ)言
    的頭像 發(fā)表于 07-16 10:54 ?1233次閱讀

    BP神經(jīng)網(wǎng)絡(luò)在語(yǔ)言特征信號(hào)分類中的應(yīng)用

    Network),即反向傳播神經(jīng)網(wǎng)絡(luò),作為一種強(qiáng)大的多層前饋神經(jīng)網(wǎng)絡(luò),憑借其優(yōu)異的非線性映射能力和高效的學(xué)習(xí)機(jī)制,在語(yǔ)言特征信號(hào)分類中展現(xiàn)出了巨大的潛力。本文將從BP神經(jīng)網(wǎng)絡(luò)的基本原理、語(yǔ)言特征信號(hào)的提取與
    的頭像 發(fā)表于 07-10 15:44 ?643次閱讀

    機(jī)器學(xué)習(xí)中的數(shù)據(jù)預(yù)處理與特征工程

    在機(jī)器學(xué)習(xí)的整個(gè)流程中,數(shù)據(jù)預(yù)處理與特征工程是兩個(gè)至關(guān)重要的步驟。它們直接決定了模型的輸入質(zhì)量,進(jìn)而影響模型的訓(xùn)練效果和泛化能力。本文將從數(shù)據(jù)預(yù)處理和特征工程的基本概念出發(fā),詳細(xì)探討這兩個(gè)步驟的具體內(nèi)容、方法及其在機(jī)器學(xué)習(xí)中的應(yīng)用。
    的頭像 發(fā)表于 07-09 15:57 ?1025次閱讀

    nlp自然語(yǔ)言處理模型怎么做

    自然語(yǔ)言處理(Natural Language Processing,簡(jiǎn)稱NLP)是人工智能領(lǐng)域的一個(gè)重要分支,它涉及到計(jì)算機(jī)對(duì)人類語(yǔ)言的理解和生成。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,NLP領(lǐng)域取得了顯著
    的頭像 發(fā)表于 07-05 09:59 ?988次閱讀

    信號(hào)的預(yù)處理包括哪些環(huán)節(jié)

    信號(hào)預(yù)處理是信號(hào)處理的一個(gè)重要環(huán)節(jié),它對(duì)信號(hào)進(jìn)行一系列的操作,以便于后續(xù)的分析和處理。信號(hào)預(yù)處理的目的是提高信號(hào)的質(zhì)量,減少噪聲,保留有用的信息,以及滿足后續(xù)
    的頭像 發(fā)表于 06-03 10:35 ?4696次閱讀

    【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的預(yù)訓(xùn)練

    的數(shù)據(jù),如圖片、音視頻等,則需要采用一定的技術(shù)手段,如自然語(yǔ)言處理(NLP)或計(jì)算機(jī)視覺(jué)(CV)技術(shù),來(lái)獲取其對(duì)應(yīng)的數(shù)據(jù)特征矩陣。 質(zhì)量過(guò)濾:質(zhì)量過(guò)濾是數(shù)據(jù)預(yù)處理中的重要步驟,用于去除無(wú)效、重復(fù)或錯(cuò)誤
    發(fā)表于 05-07 17:10