【发布时间】:2014-11-04 19:14:27
【问题描述】:
我有一个日志功能:
#define LOGERROR(err) if(err) { \
LOGTRACE(@"[NSError] %s (%d): (%d:%@) Reason: %@", \
__PRETTY_FUNCTION__, \
__LINE__, \
err.code, \
err.domain, \
err.localizedDescription) \
}
当我用
调用它时LOGERROR(playerItem.error);
我收到警告:“NSInteger 不应用作格式参数,应将显式强制转换添加到 long”。
Xcode 的 autofix 在 LOGERROR 之前插入 %ld,这是错误的。
我认为这个警告来自__LINE__ 的使用,根据https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html 返回一个int。
如何从这个调用中删除警告?
【问题讨论】:
-
我认为它实际上对
err.code感到恼火,它返回一个NSInteger。投射它:(long)(err.code),然后在格式字符串中使用%ld。 -
啊,谢谢。只是误读了。
标签: objective-c c-preprocessor iphone-64bit