C++預處理(一) —— #include
阿新 • • 發佈:2018-12-21
C++的預處理(Preprocess),是指在C++程式原始碼被編譯之前,由前處理器(Preprocessor)對C++程式原始碼進行的處理。這個過程並不對程式的原始碼進行解析,但它把原始碼分割或處理成為特定的符號用來支援巨集呼叫。
前處理器的主要作用就是把通過預處理的內建功能對一個資源進行等價替換,最常見的預處理有:檔案包含,條件編譯、佈局控制和巨集替換4種。
- 檔案包含:#include 是一種最為常見的預處理,主要是做為檔案的引用組合源程式正文。
- 條件編譯:#if,#ifndef,#ifdef,#endif,#undef等也是比較常見的預處理,主要是進行編譯時進行有選擇的挑選,註釋掉一些指定的程式碼,以達到版本控制、防止對檔案重複包含的功能。
- 佈局控制:#progma,這也是我們應用預處理的一個重要方面,主要功能是為編譯程式提供非常規的控制流資訊。
- 巨集替換: #define,這是最常見的用法,它可以定義符號常量、函式功能、重新命名、字串的拼接等各種功能。
今天我們首先接受檔案包含#include
。
#include 包含標頭檔案
標頭檔案通常以.h結尾,其 內容可使用#include前處理器指令包含到程式中,標頭檔案中一般包含: 函式原型與全域性變數,形式常有下面兩種
#include <iostream>
#include "myheader.h"
符號 | #include <> | #include “” |
---|---|---|
索引先後順序 | 先 | 後 |
優先順序 | 低 | 高 |
查詢位置 | 標準庫標頭檔案所在目錄 | 當前原始檔所在目錄 |
區別是若 #include “” 查詢成功,則遮蔽 #include <> 所能找到的同名檔案;否則再按照 #include <> 的方式查詢檔案。另外標準庫標頭檔案都放在 #include <> 所查詢的位置。