C 預處理器

2021-08-21 04:41:47 字數 633 閱讀 5266

在c++程式中,我們經常看到#開頭的語句,這些語句就是預處理器要處理的東西,他們不是c++程式的一部分。

最常見的是#define預處理,我們也稱之為巨集。

它的作用是文字替換,它的寫法是:

#define  macro-name    replace-text

文字替換的額意思就是,只要在c++程式中遇到這個macro-name,變數也好,任何東西也好,都會被替換為replace-text。

比如說預處理器定義: #define pi 3.1415     ,那麼在編譯器看來,所有我在程式裡寫到pi的地方,編譯器都會當我寫的是3.1415來處理。

也可以用#define來定義乙個帶引數的巨集:

例如: #define max(a, b)  (a>b? a:b)

這其實和函式的作用是一樣的。

在實際應用中,我們不推薦使用巨集定義,因為巨集定義是不可靠的,它是單純的機械替換,容易出錯。那麼有沒有情況,使用巨集定義會相對方便呢?

有,就是對於一些簡單函式。比如上面我們定義了乙個比較大小的巨集,應用這個巨集的話,我們可以比較任意型別引數的大小,不管它是int,float,double,這是比較省事的,因為如果我們要用函式來實現,那麼就得定義返回值各不相同的函式,來分別實現這些比較。

C 預處理器

偶爾翻c 的教材,看到了一些以前自己不太關注的角落。參考教材 c 大學教程 harvey m.deitel 和paul james deitel著。預處理發生在編譯之前,包括把其他檔案包含到要編譯的檔案中 定義符號常量和巨集 程式 的條件編譯以及預處理指令的條件執行。對應的,預處理指令有 檔案包含命...

C 預處理器

預處理器是一些指令,指示編譯器在實際編譯之前所需完成的預處理。所有的預處理器指令都是以井號 開頭,只有空格字元可以出現在預處理指令之前。預處理指令不是 c 語句,所以它們不會以分號 結尾。我們已經看到,之前所有的例項中都有 include指令。這個巨集用於把頭檔案包含到原始檔中。c 還支援很多預處理...

C 預處理器

預處理器是一些指令,指示編譯器在實際編譯之前所需完成的預處理。所有的預處理器指令都是以井號 開頭,只有空格字元可以出現在預處理指令之前。預處理指令不是 c 語句,所以它們不會以分號 結尾。我們已經看到,之前所有的例項中都有 include指令。這個巨集用於把頭檔案包含到原始檔中。c 還支援很多預處理...