【发布时间】:2012-04-17 06:08:06
【问题描述】:
我可以在 Xcode(4.2) 中构建我的项目以进行调试而不会出现问题,但是当我想构建它以进行发布(构建以进行归档)时,我收到错误:“使用不同类型的 Typedef 重新定义(无符号整数与无符号长)” .
有问题的代码是:
#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 中。
我有相同的调试和发布预处理宏,我使用的是 Apple 的 LLVM 编译器 3.0。当我尝试构建项目进行分析时,也会发生同样的错误。
知道为什么会这样吗?
【问题讨论】:
-
我知道你认为你到处都有相同的预处理宏,但是你能把#error fail放在ifdef _LZMA_UINT32_IS_ULONG块中并确保代码永远不会被编译吗?如果您确认您可以开始跟踪原因,我觉得通过 ifdef 进行调试和发布的路径不同。
-
您是否在调试与发布中为相同的目标进行编译(即其中一个编译为 64 位,另一个编译为 32 位或两者兼而有之?
-
@DRVic 你说得对,我在调试时只为 64 位编译,而在发布时我使用 32 位/64 位。当我只选择 64 位发布时,它构建得很好。如何让它同时编译为 32 位/64 位?
标签: xcode typedef redefinition llvm-3.0