了解這些C語言中的預處理命令,讓你在平常的工作中效率翻倍!
由於預處理命令不是 C 語言本身的組成部分,所以 C 編譯程序不能識別它們,也就不能直接對它們進行編譯,所以在 C 程序編譯之前,必須先對預處理命令進行處理,處理後程序中不再包括預處理命令了,再由編譯程序處理得到目標代碼。C 語言提供的預處理命令共有三中:宏定義,文件包含和條件編譯,預處理命令以 # 開頭。
一、宏定義
# define
標識符 字元串
宏名(參數表) 字元串
標識符也叫宏名,在編譯時將宏名替換成字元串的過程,叫做宏展開。
宏名一般大寫,與變數區別,但並非規定,可以用小寫。
宏定義就是用宏名代替一個字元串,做簡單置換,不做正確性檢查,只有在編譯已經宏展開後的源程序時才會去發現錯誤。
可以用 #undef 命令終止宏定義的作用域。
宏定義過程不分配內存空間,宏不存在類型問題。 宏替換不佔運行時間,只佔編譯時間。註:其實這裡書上說是編譯時間,總感覺不是很合理,既然宏替換是在編譯前替換的,替換完後才進行編譯,所以並不是編譯時間,合理來說應該是編譯等待時間。
想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙
二、文件包含
一個源文件將另一個源文件包含進來,成為本文件的一部分。
命令是 # include 「」 或 # include ,引號和尖括弧的區別是,後者是標準方式,系統到存放 C 庫函數的目錄尋找要包含的文件。前者先在用戶當前目錄尋找,找不到再按標準方式去找。一般的,包含庫函數時用尖括弧,包含自定義函數時,用雙引號,也可以帶路徑,以便節省時間。
包含其實就是個複製插入的過程,該過程是發生在編譯之前的。先將頭文件包含到主文件,得到新的源程序,再對其進行編譯,得到目標 .obj 文件。被包含文件作為包含文件的一部分,而單獨生成目標文件。一定注意並不是對兩個文件分別編譯!!!
頭文件常用 .h 做後綴,其實就是個習慣而已,用 .c 或者不用後綴也是可以的。
修改頭文件後,包含頭文件的文件都需要重新編譯才行。
三、條件編譯
程序編譯時,是對源程序中的所有行進行編譯,如果想在滿足一定條件時對部分行編譯,否則不編譯,就可以節省編譯時間,這時就可以用條件編譯。
另外,條件編譯可以減少編譯後目標程序的長度,從而減少運行時間,提高運行效率,尤其在代碼量大或程序複雜時優越性更為明顯。
第一種形式:
第二種形式:
第三種形式:
注意:以上三種形式中,else 部分可以沒有。
總結:以上所述就是神級程序員日常工作中運用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)之英文文本挖掘預處理流程