В моей копии VS2010 stdlib.h содержит (строки 353-355)
_CRTIMP __declspec(noreturn) void __cdecl exit(_In_ int _Code);
_CRTIMP __declspec(noreturn) void __cdecl _exit(_In_ int _Code);
_CRTIMP void __cdecl abort(void);
Мне странно, что на abort()
нет аннотации noreturn
. Кто-нибудь знает причину этого? Это ошибка?
EDIT: в VS2008 это то же самое, но строки 371-373 из stdlib.h
Отсутствие аннотации noreturn
вызывает ошибку C4716.
Дальнейшая ссылка: Предложение С++ 0x для стандартизации аннотации noreturn
, в котором говорится, что abort
должен нести его.
EDIT: Похоже, что куча обсуждений исчезла с удаленным ответом, но суть его описана в Отчет об ошибках # 048.