預處理器指示符用『#』標識,例如:#include。
處理這些指示符的程式被稱為「預處理器」,通常預處理器是**在編譯器中的。
#include
#include "file2.h"
用尖括號<>括起來來的,表明這個標頭檔案是乙個標準標頭檔案,查詢的時候會從預定義的目錄開始,我們可以通過設定路徑環境變數或命令列選項來修改這個路徑。
用引號「」括起來的,表明該檔案是由使用者提供的標頭檔案,查詢的時候會從當前目錄開始查詢。
條件指示符可以防止乙個標頭檔案被重複定義。
#ifndef bookstore_h
#define bookstroe_h
#endif
其中bookstore_h是乙個預編譯器常量(通常大寫)。
編譯c++程式時,編譯器會自動定義乙個預處理器常量__cplusplus(前面是兩個下劃線),我們可以根據這個預處理器常量來判斷乙個程式是否是c++程式
在編譯標準c時,編譯器會自動定義__stdc__。當然__cplusplus和__stdc__不能同時被定義。
還有兩個比較有用的預定義名字__line__和__file__。
_line__記錄檔案已經被編譯的行數;__file__記錄正在被編譯的檔名。例子如下:
_if ( element_count == 0 )
cerr << "error: " << __file__
<< " : line " << __line__
<< "element_count must be non-zero./n";
__time__和__date__分別表示當前被編譯檔案的開始編譯時間和日期。
如果開始的時間是2023年3月22號15點23分30秒,則__time__表示15:23:30;__date__表示march 22 2011
在編譯乙個檔案時,只有__line__發生了改變,__file__、__time__、__date__都不變;如果編譯的檔案發生變化時,則這四個預編譯名字都發生了改變。
assert.h是乙個c庫標頭檔案的名字,每乙個c庫的標頭檔案都有乙個c++名字,c庫檔案的c++名字總是以c開頭,並且將末尾的.h去掉。
assert.h的c++名字就是cassert。
c++程式呼叫c庫標頭檔案的方法有兩種:
第一種是直接使用c庫的頭檔名:
#include
另一種是使用c庫標頭檔案的c++名字,但是由於所有的c++庫名字是在命名空間std中定義的,在程式文字檔案中是不可見的,因此,需要使用using識別符號顯式的使其可見。
#include
using namespace std;
C 中的預處理
一 預處理的由來 在c 的歷史發展中,有很多的語言特徵 特別是語言的晦澀之處 來自於c語言,預處理就是其中的乙個。c 從c語言那裡把c語言預處理器繼承過來 c語言預處理器,被bjarne博士簡稱為cpp,不知道是不是c program preprocessor的簡稱 二 常見的預處理功能 預處理器的...
C 中的預處理
關 鍵 詞 c 一 預處理的由來 在c 的歷史發展中,有很多的語言特徵 特別是語言的晦澀之處 來自於c語言,預處理就是其中的乙個。c 從c語言那裡把c語言預處理器繼承過來 c語言預處理器,被bjarne博士簡稱為cpp,不知道是不是c program preprocessor的簡稱 二 常見的預處理...
C 中的預處理
關 鍵 詞 c 一 預處理的由來 在c 的歷史發展中,有很多的語言特徵 特別是語言的晦澀之處 來自於c語言,預處理就是其中的乙個。c 從c語言那裡把c語言預處理器繼承過來 c語言預處理器,被bjarne博士簡稱為cpp,不知道是不是c program preprocessor的簡稱 二 常見的預處理...