天天看點

c++預處理器概述 #define #ifdef #ifndef #endif

預處理器:

確定頭檔案多次包含仍能安全工作,即可以有效地防止頭檔案重複包含的發生.

它由c++語言繼承c語言而來,預處理器是在編譯之前執行的一段程式。

我們比較熟悉的#include 就是一項預處理功能,當預處理器看到#include标記時就會用指定的頭檔案代替#include。

預處理器還會用到一項預處理功能就是頭檔案保護符,頭檔案保護符依賴于預處理變量,而預處理變量有兩種狀态:已定義和未定義。

我們經常用#define指令把一個名字設定為預處理變量,

#ifdef 和#ifdnf 指令用于 檢查某個預處理變量是否已經定義。

#ifdef 為真說明變量已經被定義

#ifndef 為真說明變量還未被定義

一旦上述某個檢查結果為真則執行後續操作直至遇到#endif指令為止,

檢查結果為假則忽略在其中間的部分。

//現有頭檔案Student.h 和頭檔案Teacher.h

#ifndef STUDENT_H       
#define STUDENT_H
#include "Student.h"  //#ifndef 為真時執行此操作
#endif _STUDENT_H_

#ifdef STUDENT_H	  
#include "Teacher.h"  //#ifdef 為真時執行此操作
#endif
//兩個指令結果都為真 兩個頭檔案全被導入
           

提示:

1.預處理變量無視作用域規則

2.為了避免與其他命名沖突,一般都把預處理變量的名字全部大寫或配合'_'命名