預處理指令:
預處理指令是以#號開頭的代碼行。#號必須是該行除了任何空白字符外的第一個字符。#後是指令關鍵字,在關鍵字和#號之間允許存在任意個數的空白字符。整行語句構成了一條預處理指令,該指令將在編譯器進行編譯之前對源代碼做某些轉換。
常見的預處理指令如下:
- #空指令,無任何效果
- #include包含一個源代碼文件
- #define定義宏
- #undef取消已定義的宏
- #if如果給定條件爲真,則編譯下面代碼
- #ifdef如果宏已經定義,則編譯下面代碼
- #ifndef如果宏沒有定義,則編譯下面代碼
- #elif如果前面的#if給定條件不爲真,當前條件爲真,則編譯下面代碼
- #endif結束一個#if……#else條件編譯塊
- #error停止編譯並顯示錯誤信息
#include包含一個源代碼文件
這個預處理指令,第一種方法是用尖括號把頭文件括起來。這種格式告訴預處理程序在編譯器自帶的或外部庫的頭文件中搜索被包含的頭文件。第二種方法是用雙引號把頭文件括起來。這種格式告訴預處理程序在當前被編譯的應用程序的源代碼文件中搜索被包含的頭文件,如果找不到,再搜索編譯器自帶的頭文件。採用兩種不同包含格式的理由在於,編譯器是安裝在公共子目錄下的,而被編譯的應用程序是在它們自己的私有子目錄下的。一個應用程序既包含編譯器提供的公共頭文件,也包含自定義的私有頭文件。採用兩種不同的包含格式使得編譯器能夠在很多頭文件中區別出一組公共的頭文件。
#define定義宏
有關#define這個宏定義,在C語言中使用的很多,因爲#define存在一些不足,C++強調使用const來定義常量。宏定義了一個代表特定內容的標識符。預處理過程會把源代碼中出現的宏標識符替換成宏定義時的值。記住僅僅是進行標識符的替換。