我在NSLog/NSAssert等调用中有相当数量的字符串格式说明符,它们分别使用%d和%u使用NSInteger (= int on 32bit)和NSUInteger (= unsigned int on 32bit)类型.
将应用程序转换为64位时,会发出警告(当然),正如%ld %lu现在成为的类型long和unsigned long类型所预期的那样.
简单地转换格式说明符当然会在32位构建中引入反向警告.
因此,我认为唯一可以免于警告的解决方案是使用64位说明符,并在34位值的类型中转换为34位值,并在32位构建中给出警告.
但我想知道是否有专门针对NSInteger和NSUInteger类型的格式说明符可以在没有强制转换的情况下在两种架构上工作?