淺談#ifndef,#define,#endif的做用和用法

文件中的#ifndef.#define, #endif 很關鍵,是爲了不多重包含,好比若是兩個C文件同時包含同一頭文件,那麼就會出現問題,因此使用這種方法能夠有效避免這種狀況。ios

 

通常用法:函數

以add.h爲例測試

 
  1. #ifndef _ADD_H_spa

  2. #define _ADD_H_命令行

  3.  
  4. //在這裏包含add.h的類定義及變量和函數的聲明code

  5. 好比函數聲明:int add(int a ,int b); //分號是必須加上的編譯器

  6.  
  7. #endif //_ADD_H_io

編寫add.cpp文件編譯

 
  1. #include"add.h"stream

  2. int add(int a , int b)

  3. {

  4. return a+b;

  5. }

主函數main.cpp文件

 
  1. #include <iostream>

  2. #include "add.h"

  3. using namespace std;

  4.  
  5. int main()

  6. {

  7. int a ;

  8. a = add(2,3);

  9. cout<<a<<endl;

  10. return 0;

  11. }

1.程序中_ADD_H_爲預處理器變量,書寫格式通常是頭文件名大寫,先後加下劃線,「.」用下劃線代替。好比stdio.h表示爲_STDIO_H_.

2.預處理器變量通常有兩種狀態:已定義或未定義。

  #ifndef 指示檢測指定的預處理器變量是否未定義,若是未定義,那麼跟在後面的全部指示被處理,直到出現#endif;若是已定義,那麼#ifndef測試爲假,該指示和#endif指示間的代碼都被忽略。

  #define 指示接受一個名字並定義該名字爲預處理器變量。

3.在調用該頭文件時通常用#include "add.h".

 

4.頭文件的使用:

  若是頭文件名包含在<>中,那麼認爲該頭文件是標準頭文件。編譯器將會在預約義的位置集查找該頭文件,這些預約義的位置能夠經過設置查找路徑環境變量或者經過命令行選項來修改。

  若是頭文件名包含在"  "中,那麼認爲它是非系統文件,非系統文件的查找一般開始於源文件所在的路徑。

相關文章
相關標籤/搜索