Когда я вызываю NSLog из C ++, Xcode жалуется, что строка формата, переданная в NSLog, не является буквальной строкой. Вот строка кода, которая вызывает предупреждение:
NSLog(CFSTR("Leaking?"));
Мне неизвестен способ кодирования буквального NSString на C ++, и я не вижу соответствующего предупреждения, которое можно отключить в настройках проекта. Есть ли способ вызвать NSLog из C ++, не вызывая это сообщение? Я использую Xcode 4.2.1.
Изменить: это действительно код C ++. Я обычно избегаю Objective-C ++, придерживаясь Objective-C или простого старого C ++, потому что нет официальной документации о том, что работает в Objective-C ++, а что нет. Я нашел только расплывчатые предупреждения о том, что (например) могут быть проблемы с некоторыми частями STL. Я использую шаблоны, STL и другие «продвинутые» функции C ++, поэтому хочу перестраховаться.
Отредактируйте №2, решение: я только что понял, что clang поддерживает намного больше предупреждающих флагов, чем фактически задокументировано. (Это должно было быть очевидно из длинного списка предупреждений, которые предлагал мне Xcode.) Я попробовал -Wno-format-nonliteral a la gcc, и теперь Xcode доволен.
NSLog
, который является частью Foundation, значит, вы используете Objective-C. Используйте@"Leaking?"
и убедитесь, что ваш файл имеет расширение.mm
. - person Joe   schedule 20.03.2012