2013-10-25 39 views
2

我想在64位ios 7中使用xcode 5构建一个32位现有项目。在构建arm64期间,发生typedef重定义错误。 Xcode 5 llvm编译器显示redine错误。在下面我张贴示例代码主要是我得到错误。typedef重定义错误Xcode 5,iOS7和64bit与32bit

#if defined (__LP64__) 

typedef long int64_t; 

typedef unsigned long u_int64_t; 
#else 

typedef long long   int64_t; 
//shows redefine error int64_t long vs long long 

typedef unsigned long long u_int64_t; 
//shows redefine error u_int64_t unsigned long vs unsigned long long 
#endif 
+1

代码从哪里来?它是你的吗?如果是这样,你为什么试图定义现有的类型名称,如“int64_t”? –

+0

其现有的项目代码,使用Xcode 4.6在32位模式下成功构建。现在我想用64位的arm64架构来构建它。 – Saif

回答

3

您可以简单地从代码中删除这些定义。 int64_tu_int64_t都已在iOS SDK标头中定义。 (如有必要,添加#include <stdint.h>,这是 精确宽度的整数类型的标准报头。)

的误差实际上编译为64位时,会发生在代码的 第一部分,因为你定义

typedef long int64_t; 
typedef unsigned long u_int64_t; 

跟iOS SDK冲突定义

typedef long long  int64_t; 
typedef unsigned long long u_int64_t; 

因为longlong long是不同的类型(但在64位ARM上的相同大小)。