Удаление 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 в строке формата.

Другие вопросы по тегам