Использование необъявленного идентификатора nothrow; Вы имели в виду «бросить»? объем памяти

Я работаю над кодом cpp для переноса одного приложения с Windows на Mac. При создании приложения в XCode оно выдает ошибку, говорящую:

"Use of undeclared identifier 'nothrow'; did you mean 'throw'? memory"

Эти ошибки выбрасываются в заголовки стандартной библиотеки cpp.

Ниже приведено описание стека ошибок:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1/memory:83:8: Use of undeclared identifier 'nothrow'; did you mean 'throw'?

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1/string:48:10: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1/string:48:

Я искал в интернете, но не смог найти решение этой проблемы. Любые предложения будут полезны. Почему выкидывается ошибка из системных заголовочных файлов?

Сведения о системе:

  • SDK — это OSX 10.10.

  • Опция компилятора, используемая для компиляции приложения — C ++ Standard Library:

    libc ++ (LLVM C ++ Standard с поддержкой C ++ 11. Диалект языка C ++: GNU ++ 11. Компилятор для C ++: Apple LLVM 6.0

0

Решение

Спецификация throw () для функций устарела в стандарте ’11 и удалена в стандарте ’17. Если clang не поддерживает его, я предполагаю, что это был преднамеренный выбор со стороны разработчиков, или вы компилируете в режиме c ++ 17.

правильный в современном c ++ нужно использовать спецификацию noexcept. noexcept позволяет более эффективно генерировать код в том смысле, что он не должен выполнять RTTI для сгенерированных исключений, вместо этого, если исключение выдается из фрейма вызова под объявленной функцией noexcept, вызывается std :: terminate, закорачивая сумасшедший Механизм std :: непредвиденный (), определенный стандартом ’98.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]