0

到命名空間,我們有一個C++ Builder的應用程序已經通過Embarcadero公司的RAD Studio的許多版本住。現在,我試圖讓它在XE2編譯並遇到了一個問題,其中一個叫T組類成爲ambiguos與T組的Winsock的。添加整個項目XE2

對我的憤怒,我發現系統的初始架構師沒有使用任何命名空間,這將解決這個問題。我決定將所有項目代碼添加到單個命名空間中。但不久之後,我發現我不得不經過1400 .h和.cpp文件

咧開的愛...是否有一個很好的工具在那裏迅速封裝命名空間內的整個項目?

大多數文件在佈局上有點不同。有些在包含之後定義了,有些則沒有定義。但是爲了在include之後插入名稱空間聲明,應該可以正常工作,然後在最後一個#endif之前關閉它,這是夾雜後衛#define

回答

0

檢查有問題的頭文件是否已經使用名稱空間。所有基於VCL的頭文件都使用名稱空間,但在底部也有using namespace語句,默認情況下將所有內容都轉儲到全局名稱空間中。大多數版本都可以設置特殊的#define值來禁用該行爲。

+0

確實如此。 ** DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE **可被定義爲禁用所有自動包含。或** NO_USING_NAMESPACE_WINAPI_WINSOCK2 **僅爲Winsock2禁用它。這解決了我的問題。 – inquam 2012-03-07 13:33:55