//注意:預處理不是c++語言的組成部分。 預處理功能包括:(1)巨集定義 (2)檔案包含 (3)條件編譯
先說檔案包含:
//2 (2)檔案包含
#include
// #include "iostream"
//這種常用在檔案頭部的被包含的檔案稱為 「標頭檔案」
標頭檔案一般包含以下幾類內容:
(1) 對型別的宣告。
(2) 函式宣告。
(3) 內建(inline)函式的定義。
(4) 巨集定義。用#define定義的符號常量和用const宣告的常變數。
(5) 全域性變數定義。
(6) 外部變數宣告。如entern int a;
(7) 還可以根據需要包含其他標頭檔案。
這些內容,只要有乙個 「宣告」 的概念就可以了,與宣告(.h 檔案)相對應的是 實現,一般是 .cpp 檔案。
(1)巨集定義
#define a 10 a 只是用乙個符號代替 10,在預編譯時把所有符號常量替換為所指定的字串,存粹是替換
帶引數的巨集
#define s(a,b) a*b
//由於c++增加了內建函式(inline), 因此基本上已不再用#define命令定義帶引數的巨集了,主要用於條件編譯中。
這種替換很容易就能想到,比如 s(1,2) 會被替換為 1*2
(3)條件編譯 直接看程式demo
#define run
usingnamespace std;
int main(int argc,const
char * argv) {
#ifndef run //理解: if there is no definition of run,then:實際編譯這段話
cout<10,23)<#else //理解:else:否則,編譯下面這段話
cout
<<"123"
<#endif //結束 if
// 與普通的 if else 語句不同的是,條件編譯相當於,把**刪去了
cout
<<"what the ****"<<
endl;
//可以通過表示式判斷是否編譯,像普通的 if
#if 1
cout
<<123;
#else
cout<<321;
#endif
cout
<<234;
// #else 語句可以沒有
C語言基礎 預處理
預處理 1.c語言在對源程式進行編譯之前,會先對一些特殊的預處理指令作解釋 比如之前使用的 include檔案包含指令 產生乙個新的源程式 這個過程稱為編譯預處理 之後再進行通常的編譯 2.為了區分預處理指令和一般的c語句,所有預處理指令都以符號 開頭,並且結尾不用分號 3.預處理指令可以出現在程式...
C 基礎 預處理指令
預處理指令指導編譯器在實際編譯開始前對資訊進行預處理。下表是一些常用預處理指令 預處理器指令 描述 define 它用於定義一系列成為符號的字元。undef 它用於取消定義符號。if它用於測試符號是否為真。else 它用於建立復合條件指令,與 if 一起使用。elif 它用於建立復合條件指令。end...
C語言基礎 預處理
預處理 預處理命令是由ansi c統一規定的,但是它們不是c語言本身的組成部分,不能直接對它們進行編譯 因為編譯程式不能識別它們 必須在對程式進行通常的編譯 包括詞法和語法分析 生成 優化等 之前,先對程式中這些特殊的命令進行 預處理 即根據預處理命令對程式作相應的處理 例如,若程式中用 defin...