Dans ma copie de VS2010, stdlib.h contient (lignes 353-355)abort() n'est pas __declspec (noreturn) dans VS2010
_CRTIMP __declspec(noreturn) void __cdecl exit(_In_ int _Code);
_CRTIMP __declspec(noreturn) void __cdecl _exit(_In_ int _Code);
_CRTIMP void __cdecl abort(void);
Je trouve étrange qu'il n'y a pas d'annotation noreturn
sur abort()
. Est-ce que quelqu'un sait une raison pour cela? Est-ce un bug?
EDIT: En VS2008, c'est la même, mais les lignes 371-373 de stdlib.h
L'absence de l'annotation noreturn
déclenche error C4716. Référence: C++0x proposal for standardization of the noreturn
annotation, qui dit que abort
devrait le porter.
EDIT: On dirait qu'un tas de discussions a disparu avec une réponse supprimée, mais l'essentiel est couvert par Defect Report #048.
bonne question! Dans la libc du monde Linux, il est marqué comme noreturn. –