Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Блок, относящийся только к системам Майкрософт
Расширенный __declspec
атрибут, который можно использовать в объявлении функций.
Синтаксис
return-type
__declspec(nothrow)
[call-convention] function-name ([argument-list])
Замечания
Рекомендуется, чтобы весь новый код использовал noexcept
оператор, а не __declspec(nothrow)
.
Этот атрибут сообщает компилятору, что и объявленная функция, и функции, которые она вызывает, никогда не создают исключений. Однако директива не применяется. Другими словами, он никогда не вызывает std::terminate
вызов, в отличие noexcept
от режима или в std:c++17
режиме (Visual Studio 2017 версии 15.5 и более поздних версий), throw()
.
Поскольку по умолчанию теперь используется модель синхронной обработки исключений, то компилятор может исключить механизм, позволяющий отслеживать время существования удаляемых объектов в такой функции, и значительно уменьшить объем кода. Учитывая следующую директиву препроцессора, три объявления функций ниже эквивалентны в /std:c++14
режиме:
#define WINAPI __declspec(nothrow) __stdcall
void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();
В /std:c++17
режиме не эквивалентен другим, которые используются__declspec(nothrow)
, throw()
так как вызываетсяstd::terminate
, если исключение создается из функции.
Объявление void __stdcall f3() throw();
использует синтаксис, определенный стандартом C++. В C++17 ключевое throw()
слово было устарело.
Завершение блока, относящегося только к системам Майкрософт