1. 程式人生 > >#ifndef.#define, #endif 的用法

#ifndef.#define, #endif 的用法

檔案中的#ifndef.#define, #endif 很關鍵,是為了避免多重包含,比如如果兩個C檔案同時包含同一標頭檔案,那麼就會出現問題,所以使用這種方法可以有效避免這種情況。

一般用法:

以add.h為例

複製程式碼

1 #ifndef  _ADD_H_
2 #define _ADD_H_
3 
4 //在這裡包含add.h的類定義及變數和函式的宣告
5 比如函式宣告:int add(int a ,int b);  //分號是必須加上的
6 
7 #endif  //_ADD_H_

複製程式碼

編寫add.cpp檔案

#include"add.h"
int add(int a , int b)
{
  return a+b;  
}

主函式main.cpp檔案

複製程式碼

#include <iostream>
#include "add.h"
using namespace std;

int main()
{    
    int a ;
    a = add(2,3);
    cout<<a<<endl;
    return 0;
}

複製程式碼

1.程式中_ADD_H_為前處理器變數,書寫格式一般是標頭檔案名大寫,前後加下劃線,“.”用下劃線代替。比如stdio.h表示為_STDIO_H_.

2.前處理器變數一般有兩種狀態:已定義或未定義。

  #ifndef 指示檢測指定的前處理器變數是否未定義,如果未定義,那麼跟在後面的所有指示被處理,直到出現#endif;如果已定義,那麼#ifndef測試為假,該指示和#endif指示間的程式碼都被忽略。

  #define 指示接受一個名字並定義該名字為前處理器變數。

3.在呼叫該標頭檔案時一般用#include "add.h".

4.標頭檔案的使用:

  如果標頭檔案名包含在<>中,那麼認為該標頭檔案是標準標頭檔案。編譯器將會在預定義的位置集查詢該標頭檔案,這些預定義的位置可以通過設定查詢路徑環境變數或者通過命令列選項來修改。

  如果標頭檔案名包含在"  "中,那麼認為它是非系統檔案,非系統檔案的查詢通常開始於原始檔所在的路徑。

注意事項:

變數最好不要定義在.h檔案中,具體原因還未深究,在一處部落格看到過。