C 預處理器的簡單介紹

2021-06-17 17:56:55 字數 1158 閱讀 3975

1、預處理器

預處理器是c++程式編譯的一部分;

預處理器處理程式的原始碼,在編譯器之前執行;

預處理器是c++繼承c語言的,但是c++的大量特徵減少了預處理器的使用;

c++預處理器的乙個重要的用法:#include《標頭檔案》,將標頭檔案併入程式。

2、#include是如何工作的

#include是c++預處理器的一部分,預處理器用指定的標頭檔案內容代替每個#include。

3、標頭檔案經常包含其他標頭檔案,原始檔會多次包含同乙個標頭檔案。

標頭檔案一:

example_1.h 

int a;

int b;

標頭檔案二:

example_2.h

#include"example_1.h"

int c;

int d;

原始檔test.cpp

#include #includeint main()

在設計標頭檔案時,應該可以使標頭檔案多次包含在乙個原始檔中,但是程式設計師必須保證的是,多次包含同一標頭檔案不會引起該檔案定義的類和物件被多次定義,從上面的例子來看,顯然會在example_2.h標頭檔案中對a和b進行一次定義,在test.cpp原始檔中對a和b在進行一次定義。這樣會產生什麼後果呢?

4、針對上面出現的問題,標頭檔案在原始檔中被多次包含,引起了對頭檔案中定義的類和物件多次定義的現象,可以使用預處理器變數來解決。

#define指示接受乙個名字並定義該變數為預處理器變數

#ifndef指示檢測指定的預處理器變數是否定義。

上面的第乙個標頭檔案可以改為:

example_1.h 

#ifndef example1

#define example!

int a;

int b;

#endif

這樣,編譯器在編譯的時候,會先編譯example_2.h標頭檔案,發現沒有定義example1預處理器變數,於是定義該變數,並定義int a,int b。

編譯器繼續編譯test.cpp原始檔是,發現已經定義example1預處理器變數,#ifndef指示為假,該指示和#endif之間的**將全部被忽略。

C 預處理器

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

C 預處理器

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

C 預處理器

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