3
NSIntegerのNSLog / printf指定子?
A NSIntegerは、32ビットプラットフォームでは32ビット、64ビットプラットフォームでは64ビットです。NSLog常にサイズに一致する指定子はありNSIntegerますか? セットアップ Xcode 3.2.5 llvm 1.6コンパイラ(これは重要です。gccはこれを行いません) 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代わりに使用するように提案されます。 %ld64ビットサイズと一致させるために使用する場合、32ビットコード用にコンパイルすると、%d代わりに使用することを示唆する警告が表示されます。 両方の警告を一度に修正するにはどうすればよいですか?どちらでも機能する指定子はありますか? これも影響[NSString stringWithFormat:]し[[NSString alloc] initWithFormat:]ます。