C 中的預處理

2021-05-24 14:58:00 字數 1306 閱讀 7400

預處理器指示符用『#』標識,例如:#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的簡稱 二 常見的預處理...