C 中的編譯預處理

2021-08-28 10:32:17 字數 1259 閱讀 5197

預處理程式又稱預處理器,它包含在編譯器中。預處理程式首先讀原始檔。預處理的輸出是「翻譯單元」,它是存放在記憶體中的臨時檔案。編譯器接受預處理的輸出,並將源**轉換成包含機器語言指令的目標檔案。

預處理程式對原始檔進行第1次處理,它處理的是預處理命令。c++提供的預處理命令主要有3種,分別是:檔案包含命令、巨集定義命令和條件編譯命令。

這些命令在程式中都是以#開頭的,每一條預處理命令必須單獨佔一行。由於不是c++的語句,因此在結尾沒有分號。

1、檔案包含命令

所謂「檔案包含」是指將另乙個源程式的內容合併到當前源程式中。c++程式提供了#include命令用於實現檔案的包含操作,它有下列兩種格式:

#include 《檔名》    // 使用<>括起來的標頭檔案一般存在於c++系統目錄中的include子目錄中  

#include "檔名" // 使用雙引號括起來的標頭檔案一般在當前檔案所在的目錄下

2、巨集定義命令

使用#define來進行巨集定義,巨集定義一般有兩種形式:不帶引數的巨集定義和帶引數的巨集定義。

#define pi 3.1415926     //不帶引數的巨集定義

#define s(a,b) a*b //帶引數的巨集定義

#undef pi //終止pi的作用域

使用巨集定義的優點是減少了程式中重複書寫某些字串的工作量和出錯率,提高了程式的通用性。

3、條件編譯

對源程式中一部分內容只在滿足一定條件時才進行編譯,也就是對一部分內容指定編譯的條件,這就是條件編譯。c++提供的條件編譯命令有以下3中形式:

//第一種

#ifdef debug

cout << "x = " << x << " ,y = " << y << " ,z = " << z << endl;

#else

cout << "hahahahaha" << endl;

#endif

//第二種

#ifndef _頭檔名_h

#define _頭檔名_h

...#endif

//第三種

#if 表示式1

程式段1

#elif 表示式2

程式段2

#elif 表示式3

程式段3

...#else

程式段n

#endif

C 中的編譯預處理命令

c 中可以寫一些共編譯程式使用的命令 編譯預處理命令,這些命令並不是c 程式所要完成的功能,而是對於編譯過程給出指導,其功能有編譯預處理程式來完成。c 的編譯預處理命令主要有 檔案包含命令 include 巨集定義 define 以及條件編譯命令。下面分別對其做介紹 檔案包含命令 include 在...

C 編譯預處理

c 的預處理是編譯器在編譯源程式之前,先由預處理器處理預處理指令,由於在c 源程式中有各種編譯命令,而這些編譯命令由於是在程式被正常編譯之前執行的,故稱為預處理命令 或指令 預編譯命令用來擴充c 程式設計的環境,使得程式書寫變得更加簡練和清晰。c 提供的預處理功能主要有以下3種 巨集定義命令。檔案包...

對C 中編譯預處理的認識

程式在正式編譯前都要經過編譯預處理,編譯預處理包括編譯預處理指令和編譯預處理操作符。1.編譯預處理指令 1.include include又叫做檔案包含指令,是用來包含標頭檔案和原始檔的,使之嵌入當前include所在的位置。include有兩種形式 include 檔名 和 include 檔名 ...