文件中的#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文件中,具體原因還未深究,在一處博客看到過。