預處理是指在進行程式編譯的第一遍掃瞄(詞法掃瞄和語法分析)之前所做的工作。預處理是c語言乙個重要功能,它由預處理程式負責完成。當對乙個原始檔進行編譯時,系統將自動引用預處理程式對源程式中的預處理部分進行處理,處理完畢自動進入對源程式的編譯。
預處理程式(預處理器)包含在編譯器中。預處理程式首先讀原始檔,預處理的輸出是「翻譯單元」,它是存放在記憶體中的臨時檔案。編譯器接受預處理的輸出,並把源**轉化為包含機器語言指令的目標檔案。
預處理器的作用是通過預處理的內建功能對乙個資源進行等價替換,最常見的預處理有檔案包含、巨集替換、條件編譯和布局控制4種。
有兩種格式,一種格式是#include 《檔名》,這些標頭檔案一般儲存在c++的系統目錄下的include子目錄下,這種格式是標準方式。另一種格式是 #include "檔名",預處理器遇到這種格式的包含指令後,首先在當前檔案所在目錄中進行搜尋,如果找不到,再按標準方式進行搜尋。
#define,這是最常見的一種用法,它可以定義符號常量、函式功能、重新命名、字串拼接等功能。
#if #ifndef #endif #undef等也是比較常見的預處理,主要是編譯時進行有選擇的挑選,豬是調一些指定的**,以達到版本控制、防止對檔案重複包含的功能。
#progma ,為編譯程式提供非常規的控制流資訊,有以下幾種:
4.1 #progma warning(disable:***)
在程式編譯時不顯示***警告資訊
4.2 #progma comment(…)
該指令將乙個注釋記錄放入乙個物件檔案或可執行檔案中。常用的lib關鍵字可以用於連線乙個庫檔案,比如 #progma comment(lib,"user32.lib")指令用來將users2.lib庫檔案加入到工程中。
4.3 #progma once
只要在標頭檔案的最開加入這條指令,就能夠保證標頭檔案被編譯一次。
C 預處理 之 條件編譯
序號描述 1展開所有的標頭檔案 2巨集定義的替換 3解析條件編譯 並新增到檔案中 預處理命令 以符號 開頭。採用 條件編譯,可以減少被編譯的語句,從而減少目標的長度。當 條件編譯 段比較多時,目標程式長度可以大大減少。序號命令含義 1 if 編譯預處理 的 條件命令,相當於c語言中的 if 語句 2...
C 總結之預處理指令
預處理指令 條件包含指令 文字替換指定 預定義巨集 原始檔包含 pragma指令 error和 line 預處理指令的常見應用 防止標頭檔案被重複包含 日誌巨集巨集定義實現動態庫 和除錯 使用同一標頭檔案 條件編譯 共包括 if,ifdef,ifndef,elif,else,endif 條件包含指令...
c 預處理和預處理命令
預處理發生在編譯之前,預處理輸出的是乙個單一的檔案,這個檔案被送到編譯器,進行編譯。每條預處理命令都控制預處理器的行為。每條預處理命令佔據一行,有以下的格式 character 預處理命令 one of define,undef,include,if,ifdef,ifndef,else,elif,e...