Когда я вызываю NSLog из C++, Xcode жалуется, что строка формата, переданная в NSLog, не является буквальной строкой. Вот строка кода, которая вызывает предупреждение:
NSLog(CFSTR("Leaking?"));
Я не знаю, как закодировать литерал NSString в C++, и я не вижу соответствующего предупреждения, которое можно было бы отключить в настройках проекта. Есть ли способ вызвать NSLog из С++, не вызывая это сообщение? Я использую 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 доволен.