當前位置:
首頁 > 知識 > 了解這些C語言中的預處理命令,讓你在平常的工作中效率翻倍!

了解這些C語言中的預處理命令,讓你在平常的工作中效率翻倍!

由於預處理命令不是 C 語言本身的組成部分,所以 C 編譯程序不能識別它們,也就不能直接對它們進行編譯,所以在 C 程序編譯之前,必須先對預處理命令進行處理,處理後程序中不再包括預處理命令了,再由編譯程序處理得到目標代碼。C 語言提供的預處理命令共有三中:宏定義,文件包含和條件編譯,預處理命令以 # 開頭。

一、宏定義

# define

標識符 字元串

宏名(參數表) 字元串

標識符也叫宏名,在編譯時將宏名替換成字元串的過程,叫做宏展開。

宏名一般大寫,與變數區別,但並非規定,可以用小寫。

宏定義就是用宏名代替一個字元串,做簡單置換,不做正確性檢查,只有在編譯已經宏展開後的源程序時才會去發現錯誤。

可以用 #undef 命令終止宏定義的作用域。

宏定義過程不分配內存空間,宏不存在類型問題。 宏替換不佔運行時間,只佔編譯時間。註:其實這裡書上說是編譯時間,總感覺不是很合理,既然宏替換是在編譯前替換的,替換完後才進行編譯,所以並不是編譯時間,合理來說應該是編譯等待時間。

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙

二、文件包含

一個源文件將另一個源文件包含進來,成為本文件的一部分。

命令是 # include 「」 或 # include ,引號和尖括弧的區別是,後者是標準方式,系統到存放 C 庫函數的目錄尋找要包含的文件。前者先在用戶當前目錄尋找,找不到再按標準方式去找。一般的,包含庫函數時用尖括弧,包含自定義函數時,用雙引號,也可以帶路徑,以便節省時間。

包含其實就是個複製插入的過程,該過程是發生在編譯之前的。先將頭文件包含到主文件,得到新的源程序,再對其進行編譯,得到目標 .obj 文件。被包含文件作為包含文件的一部分,而單獨生成目標文件。一定注意並不是對兩個文件分別編譯!!!

頭文件常用 .h 做後綴,其實就是個習慣而已,用 .c 或者不用後綴也是可以的。

修改頭文件後,包含頭文件的文件都需要重新編譯才行。

三、條件編譯

程序編譯時,是對源程序中的所有行進行編譯,如果想在滿足一定條件時對部分行編譯,否則不編譯,就可以節省編譯時間,這時就可以用條件編譯。

另外,條件編譯可以減少編譯後目標程序的長度,從而減少運行時間,提高運行效率,尤其在代碼量大或程序複雜時優越性更為明顯。

第一種形式:

第二種形式:

第三種形式:

注意:以上三種形式中,else 部分可以沒有。

總結:以上所述就是神級程序員日常工作中運用C語言中的預處理命令了!

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

關於C語言的學習,第一個小項目,打造掃雷遊戲
從月入過萬的程序員到年薪百萬的架構師要經歷些什麼?

TAG:C加加 |

您可能感興趣

5種常見化療葯不良反應的預處理
為什麼我們需要數據預處理?
種子預處理,蔬菜長得好!
C預處理器指令
機器學習模型的數據預處理和可視化
從預處理到部署:如何使用Lore快速構建機器學習模型
投資的邏輯之預處理器
分享「食材預處理的基本原則」
從數據預處理到排序演算法,全方位解讀 Uber 人工智慧客服 COTA
三言兩語推薦系統之二——數據預處理
CIMS管道清淤切割修復機器人-管道非開挖修復預處理利器
等離子體預處理可以增強3D列印
三行Python代碼,讓數據預處理速度提高2到6倍
數據預處理——數據清洗
3行代碼,Python數據預處理提速6倍!
基於Halcon的圖像預處理
入門 | 三行Python代碼,讓數據預處理速度提高2到6倍
Python數據預處理:使用Dask和Numba並行化加速
如何科學地使用keras的Tokenizer進行文本預處理
乾貨 | 自然語言處理(5)之英文文本挖掘預處理流程