1

在我的应用程序中,我使用Compiler for C/C++/Objective-C是用于模拟器的Apple LLVM 编译器 4.1 。对于模拟器,这是可行的。当我为设备编译相同的代码时,我将C/C++/Objective-C 的编译器更改为LLVM GCC 4.2。这次我在 stdio.h “冲突类型”中遇到错误“sprintf”。

我正在使用 Mac OS x 10.7.4 Xcode 4.5(iOS 6)

这在 (Mac OS x 10.7.4 & Xcode 4.2.3(iOS 5)) && (Mac OS x 10.6.8 & Xcode 3.2.3(iOS 4)) 中运行良好。

LLVM 编译器的 iOS 5 和 iOS 6 有什么区别。有人请帮帮我吗?

4

1 回答 1

1

在 Mac OS X 下编译通用应用程序时,使用数据类型时,我看到此警告NSIntegerNSUInteger

NSInteger thing = 7;
NSLog(@"Thing is %ld", thing);

这将在 64 位下工作,但在 32 位下会发出警告(提示;iOS 使用 32 位架构)。

thing在这种情况下,(丑陋的)解决方案是强制long

NSLog(@"Thing is %ld", (long)thing);

这将在任何地方工作。

这比:

#ifdef __x86_64
NSLog(@"Thing is %ld", thing);
#else
NSLog(@"Thing is %d", thing);
#endif
于 2012-10-29T10:33:13.583 回答