Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Блок, относящийся только к системам Майкрософт
Атрибут __declspec
сообщает компилятору, что функция не возвращается. Затем компилятор знает, что код после вызова __declspec(noreturn)
функции недоступен.
Если компилятор обнаруживает функцию с путем элемента управления, которая не возвращает значение, он создает предупреждение (C4715) или сообщение об ошибке (C2202). Если путь к элементу управления не может быть достигнут из-за функции, которая никогда не возвращается, используйте __declspec(noreturn)
для предотвращения этого предупреждения или ошибки.
Примечание.
Добавление __declspec(noreturn)
в функцию, которая, как ожидается, возвращает, может привести к неопределенному поведению.
Пример
В следующем примере вызывается аргумент для отрицательного isZeroOrPositive
fatal
значения. В этом пути управления нет инструкции возврата, что приводит к предупреждению C4715, что не все пути управления возвращают значение. fatal
Объявление как смягчает это предупреждение, которое является желательным, так как __declspec(noreturn)
с момента fatal()
завершения программы нет смысла.
// noreturn2.cpp
#include <exception>
__declspec(noreturn) void fatal()
{
std::terminate();
}
int isZeroOrPositive(int val)
{
if (val == 0)
{
return 0;
}
else if (val > 0)
{
return 1;
}
// this function terminates if val is negative
fatal();
}
int main()
{
isZeroOrPositive(123);
}
Завершение блока, относящегося только к системам Майкрософт