#c #xcode #macos #c 11
#c #xcode #macos #c 11
Вопрос:
Я запускаю Xcode 5.0 (5A1413) на Mac OSX 10.9.2. Он использует компилятор LLVM 5.0 по умолчанию. Я вижу следующие ошибки при попытке создать свой проект, где бы ни использовались std::to_string
или std::stoi
:
Нет элемента ‘to_string’ в пространстве имен std
Нет члена ‘stoi’ в пространстве имен std. Вы имели в виду atoi?
Я выполнил поиск в stackoverflow и нашел несколько сообщений, касающихся зависимости этих функций от c 11. Поэтому в моих настройках Xcode мои настройки сборки следующие:
Apple LLVM 5.0 — Языковые настройки:
- Диалект языка C = «c11»
- Диалект языка C = «C 11[-std=c 11]»
- Стандартная библиотека C = «libc (стандартная библиотека LLVM C с поддержкой C 11)»
Я также попытался установить диалект языка C и стандартную библиотеку C соответственно по умолчанию. Результаты те же.
Я проверил свой набор инструментов. Когда я запускаю xcode-select -p
Я получаю:
/Приложения/Xcode.app/Содержимое / Разработчик
Полный путь к цепочке инструментов равен:
/Приложения/Xcode.app/Содержимое / Разработчик / Цепочки инструментов/XcodeDefault.xctoolchain/usr/ lib/c /v1
«Строка», определенная в подкаталоге toolchain, действительно имеет прототипы stoi
и to_string
функций. Итак, кажется, что я указываю на правильную цепочку инструментов. Очевидно, я здесь чего-то не хватает.
Был бы признателен за любую помощь в решении этой проблемы. Спасибо!
Комментарии:
1. Вы
#include <string>
? И можете ли вы заставить XCode показать вам командную строку, которую он использует для вызова компилятора?2. Вы включили файл заголовка? Почему бы вам не показать нам свой код?
3. @Praetorian Как мне заставить XCode показать мне командную строку, которую он использует для вызова компилятора? Как ни странно, наличие ‘#include <string>’, похоже, не имело значения.
4. Понятия не имею, никогда не использовал XCode.
5. @AndreyErick Проблемные области — это всего лишь однострочники, которые разбросаны по всему довольно большому файлу кода, поэтому показалось более эффективным просто показывать строки. Например, ‘command = std::to_string(port);’ где port — это uint16_t. Или ‘cseq = std::stoi (param);’ где param — это ‘строка’.