NSInteger
在32位平台上是32位,在64位平台上是64位.是否有NSLog
说明符总是匹配NSInteger
的大小?
安装程序
- Xcode 3.2.5
- llvm 1.6编译器(this is important; gcc doesn't do this)
-
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF
打开
这让我有些悲伤:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSInteger i = 0;
NSLog(@"%d", i);
}
return 0;
}
对于32位代码,我需要%d
说明符.但是如果我使用%d
说明符,在编译64位时会收到一条警告,建议我使用%ld
.
如果我使用%ld
来匹配64位大小,当编译32位代码时,我会收到一条警告,建议我使用%d
.
如何同时修复这两个警告?是否有一个我可以使用的说明符可以在其中任何一个上工作?
这也会影响[NSString stringWithFormat:]
和[[NSString alloc] initWithFormat:]
.