2017-02-16 67 views
1

我遇到了別人代碼的問題,看起來頭文件是亂序包含的。 (例如,我得到重定義錯誤,其中一些甚至在同一個文件中!)看到C++ Builder編譯器正在使用的#include樹,這與Visual Studio的-showIncludes標誌類似。有沒有這樣的功能;如果是這樣,我該如何訪問它?我特別使用C++ Builder 2007.在C++ Builder中顯示#include層次結構

回答

0

如果包含多個包含全局常量,變量的文件,有時甚至包含#defines,通常會發生這種情況。這是MDI應用其中主Form包含的子包括Form S和他們中的一些使用相同的庫很常見......

包含分層結構不會幫助,除非你打算進行編輯所有源文件#include爲了這可能會導致問題以後(尤其是兼容性)...

爲了解決這個問題,你應該與封裝

#ifndef _file_name_h 
#define _file_name_h 
// here your source and includes 
#endif 

語句所有這些文件。像在本例中:

這將防止在編譯前的水平作爲源多個定義和彙編將被處理僅在第一次(同時仍然沒有限定#define _file_name_h)。

0

不幸的是,沒有Borland C編譯器選項來顯示#include d文件的層次結構。參見Embarcadero的BCC32 CLI docs

然而,替代方案(授予的,不是很乾淨)是使用Borland C Compiler Preprocessor,例如,

CPP32 -Sr source.cpp # outputs source.i with comments and indentation retained