我可以在Xcode(4.2)中构建我的项目以进行调试而不会出现问题,但是当我想构建它以进行发布(构建用于存档)时,我得到错误:“Typedef重定义使用不同类型(unsigned int vs unsigned long)”
有问题的代码是:
#ifdef _LZMA_UINT32_IS_ULONG
typedef long Int32;
typedef unsigned long UInt32;
#else
typedef int Int32;
typedef unsigned int UInt32; <--error on this line
#endif
您可以在以下位置查看整个文件: http://read.pudn.com/downloads166/sourcecode/zip/758136/C/Types.h__.htm
以前的定义是在CoreServices框架的MacTypes.h中。
我有与Debug和Release相同的预处理器宏,我正在使用Apple的LLVM编译器3.0。当我尝试构建用于分析的项目时,会发生同样的错误。
知道为什么会这样吗?
答案 0 :(得分:7)
如果您收到错误(编译32位时),您已经拥有相应的
typedef unsigned int UInt32; <--error on this line
(因此错误)所以你可以删除有问题的行。
显然不是所有的源代码都包含/导入MacTypes.h,所以为了两种方式,用#ifdefs包围违规行,如下所示:
#ifndef __MACTYPES__
typedef unsigned int UInt32;
#endif
不幸的是,这并不完美;你必须确保如果包含MacTypes.h,它会在此之前发生。确保这一点的一种方法是在本地#imports之前进行系统#imports。