我正在尝试使用 xcode 5 在 64 位 ios 7 中构建一个现有的 32 位项目。在使用架构 arm64 构建期间,发生 typedef 重新定义错误。 Xcode 5 llvm 编译器显示 redine 错误。在下面我发布了主要出现错误的示例代码。
#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
最佳答案
您只需从代码中删除这些定义即可。
两者int64_t
和u_int64_t
已在 iOS SDK header 中定义。
(如有必要,添加 #include <stdint.h>
,这是标准 header
精确宽度整数类型。)
错误实际上发生在 编译 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;
自 long
和long long
是不同的类型(但在 64 位 ARM 上大小相同)。
关于ios - typedef 重新定义错误 Xcode 5、iOS7 和 64 位与 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19581297/