假定有以下幾個頭文件及其包含關系為:
File1.h,file2.h,file3.h,file4.h,file5.h,main.cpp
那麼:file3.h包含file1.h,file2.h,file4.h包含file1.h,file2.h,file5.h包含file3.h,file4.h。如許就會導致在file5中對file1和file2的反復包含,編譯時就會報錯。
解決方法:
1:應用#ifndef
#define
#endif
即每個文件在定義時都寫成以下情勢(以file1.h為例):
#ifndefH_FILE1
#defineH_FILE1
#include<stdio.h>
#include<math.h>
…..
#endif
File3.h:#ifndefH_FILE3
#defineH_FILE3
#include<stdio.h>
#include<math.h>
#inlcude”file1.h”
#include”file2.h”
…..
#endif
方法二:在每個文件的頭部定義:#pragmaonce(用於解釋本文件中的內容只應用一次)
例:fiel1.h:
#pragmaonce
#include<stdio.h>
#include<math.h>
…..
File3.h:
#pragmaonce
#include<stdio.h>
#include<math.h>
#include”file1.h”
…..
*