Удаление NSInteger предупреждение с помощью __LINE__
У меня есть функция журнала:
#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 вставляет%ld перед LOGERROR, что неверно.
Я думаю, что это предупреждение исходит от использования __LINE__
который согласно https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html возвращает int.
Как я могу удалить предупреждение из этого звонка?
1 ответ
Решение
Просто чтобы формализовать ответ, который я дал в комментарии:
Компилятор жалуется на использование err.code
, который возвращает NSInteger. Принеси это long
: (long)(err.code)
, а затем использовать %ld
в строке формата.