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