往往我說今天上課的內容是預處理時,便有學生質疑:預處理不就是include 和define麼?這也用得著講啊?。
是的,非常值得討論,即使是include 和define。但是預處理僅限於此嗎?遠遠不止。
先看幾個個常識性問題:
a)預處理是c 語言的一部分嗎?
b)包含「#」號的都是預處理嗎?
c)預處理指令後面都不需要加「;」號嗎?
不要急著回答,先看看ansi 標準定義的c 語言預處理指令:
另外ansi 標準c 還定義了如下幾個巨集:
1. _line_ 表示正在編譯的檔案的行號
2. _file_ 表示正在編譯的檔案的名字
3. _date_ 表示編譯時刻的日期字串,例如: "25 dec 2007"
4. _time_ 表示編譯時刻的時間字串,例如: "12:30:55"
5. _stdc_ 判斷該檔案是不是定義成標準c 程式
如果編譯器不是標準的,則可能僅支援以上巨集的一部分,或根本不支援。當然編譯器也有可能還提供其它預定義的巨集名。注意:巨集名的書寫由識別符號與兩邊各二條下劃線構成。
相信很多初學者,甚至一些有經驗的程式設計師都沒有完全掌握這些內容,下面就一一詳細討論這些預處理指令。
預處理命令詳解
指令用途 空指令,無任何效果 include包含乙個源 檔案 define定義巨集 undef取消已定義的巨集 if如果給定條件為真,則編譯下面 ifdef如果巨集已經定義,則編譯下面 ifndef如果巨集沒有定義,則編譯下面 elif如果前面的 if給定條件不為真,當前條件為真,則編譯下面 end...
C語言基礎自學總結之九 預處理
1.預處理一般是指在程式源 被翻譯為目標 的過程中,生成二進位制 之前的過程 3.預處理是 把.c檔案變成.i 檔案,他們都是c語言檔案,預處理做的第一件事就是展開標頭檔案,把檔案內容寫出來。第二件事就是替換巨集。例子1 什麼叫做巨集 include define n 6 這就是巨集,意思是用6替換...
C 實驗報告函式與預處理
實驗報告 1.判別素數的程式 include using namespace std int main if flag cout 用17 34 2 1 0執行和檢驗。執行結果 結果分析 對於0和1來說,兩者都不是素數。其它執行結果均正確。2.驗證歌德 猜想 include include using...