C++ 包括<;字符串>;原因';重新定义';std-lib函数的错误

C++ 包括<;字符串>;原因';重新定义';std-lib函数的错误,c++,xcode,C++,Xcode,我正在用XCode将一个相当大的C/C++项目移植到Mac上。一些C++类导入字符串< /代码>或向量< /代码>。这会导致一些奇怪的错误,报告几个std函数的重新定义。例如,编译器在中报告对“std::\uu是整型的”的重新定义 我没有收到任何其他错误,我肯定不会覆盖这些std函数。当我注释字符串的include时,错误也消失了 什么会导致这种行为? < P>,结果是,在C++代码中的某个地方,我继承了这个项目——对代码< BoOL 进行了重新定义。code>bool被重新定义为int。因此,

我正在用XCode将一个相当大的C/C++项目移植到Mac上。一些C++类导入<代码>字符串< /代码>或<代码>向量< /代码>。这会导致一些奇怪的错误,报告几个std函数的重新定义。例如,编译器在
中报告
对“std::\uu是整型的”
的重新定义

我没有收到任何其他错误,我肯定不会覆盖这些std函数。当我注释
字符串的include时,错误也消失了


什么会导致这种行为?

< P>,结果是,在C++代码中的某个地方,我继承了这个项目——对代码< BoOL 进行了重新定义。code>bool
被重新定义为
int
。因此,在
type\u traits
标题(以及一些其他std-lib标题)中,存在包含
bool
int
通用参数的泛型方法的重复方法定义

例如,在类型_特征中有:

template <> struct __is_integral<bool> : public true_type {};
template struct_uu是_integral:public true_type{};

template struct_uu是_integral:public true_type{};

AS <代码> BOOL被重新定义为int。两种方法都具有相同的签名,而我得到了这个代码>重新定义…< /Cord>错误。< /P>请不要将C++称为“C/C++”。这完全是错的,你是对的。很抱歉该项目具有C和C++代码,但所描述的问题只影响C++代码。(我编辑了答案)

template <> struct __is_integral<int> : public true_type {};