В моей копии 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
.Кто-нибудь знает причину этого?Это ошибка?
РЕДАКТИРОВАТЬ: В VS2008 это то же самое, но строки 371-373 stdlib.h
Отсутствие аннотации noreturn
вызывает ошибка C4716.
Дополнительная ссылка: C ++ 0x предложение по стандартизации noreturn
аннотации , в котором говорится, что abort
должно нести его.
EDITПохоже, что дискуссия исчезла с удаленным ответом, но суть этого раскрыта в Отчете о дефектах # 048 .