Подтвердить что ты не робот

Неявное объявление функции - C99

В настоящее время я использую Xcode 4, а в моем .pch файле у меня есть этот макрос: #define localize(s) NSLocalizedString((s), nil).
Когда я пытаюсь использовать этот макрос в каком-либо файле .m, я получаю это предупреждение: Implicit declaration of function 'localize' is invalid in C99.

Этот код компилируется без проблем, но как я могу это исправить, поэтому я не получаю предупреждение?

4b9b3361

Ответ 1

У меня была эта проблема, когда я сделал глобальную замену NSLog на DLog. Я безрассудно включил

#define DLog(...) NSLog(...

поэтому я закончил с

#define DLog(...) DLog(...

который вызвал предупреждения и ошибку компоновщика.

Ответ 2

Неявные объявления функций - это те, которые компилятор видит в первый раз как вызов функции (в отличие от тех, где первый образец или определение функции).

По-видимому, ваш код использовал localize(foo), но определение макроса не было видно. Возможные причины: вы забыли #include файл, содержащий макрос локализации, или предварительную компиляцию заголовков, отправленных на юг, и не включили макрос localize, поэтому он остался нерасширенным.

Ответ 3

Другая "глупая" ошибка, с которой я столкнулся, заключалась в том, что мой DLog был определен в заголовке префикса iOS-мишени, поэтому мне пришлось скопировать его и в префикс целевой OSX...

Ответ 4

У меня была эта проблема, потому что я случайно импортировал CocoaLumberjack следующим образом:

#import <CocoaLumberjack/DDLog.h>

По-видимому, команда CocoaLumberjack еще раз расширила код; и макросы типа DDLogError теперь определяются отдельно в собственном файле заголовка.

Я заменил оператор import этим, и ошибка исчезла:

#import <CocoaLumberjack/CocoaLumberjack.h>

Ответ 5

В моем случае только один файл выдавал эту ошибку. Оказалось, что я добавил его к целевому членству в тестировании проектов (в Файловом инспекторе справа).