#pragram與#ifndefine防止頭文件重復編譯的區別
#pragram once與#ifndefine防止頭文件重復編譯的區別
#ifndefine...#define...#endif是C/C++語言的宏定義,通過宏定義可以避免頭文件重復包含。
優點:與編譯器無關,因此可以跨平臺使用;
缺點:(1)對于每一個頭文件都必須有獨特的宏定義名稱,一旦出現多個頭文件宏定義相同,同時包含這這些個頭文件時就會導致僅第一個頭文件包含成功;如下列代碼顯示,Tesh.cpp中包含了File1.h與File2,h兩個頭文件,但是兩個頭文件在定義時宏定義都是FILE_H,故File1.h包含成功同時但File2.h包含失敗。
(2)需要打開每個文頭文件判斷宏定義名稱;
File1.h
#ifndef FILE_H
#define FILE_H
...\\program codes
#endif
File2.h
#ifndef FILE_H
#define FILE_H
...//program codes
#endif
Test.h
#include "File1.h"
#include "File2.h"
...//program codes
#pragram once由編譯器來避免頭文件重復包含;
優點:該方式通過物理地址來判定同一文件,故不用打開每個頭文件,相比#ifndef節省編譯時間;
缺點:(1)與編譯器有關,有的編譯器不支持,不適合在跨平臺的程序中使用;
(2)當同一文件有多個拷貝(則物理地址不同),同時包含這些頭文件時編譯器無法避免這種重復包含的情況;
posted on 2017-09-05 20:22 silentteen 閱讀(801) 評論(0) 收藏 舉報
浙公網安備 33010602011771號