2013-10-25 38 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上的相同大小)。