Nella mia copia di VS2010, stdlib.h contiene (linee 353-355)abort() non è __declspec (noreturn) in VS2010
_CRTIMP __declspec(noreturn) void __cdecl exit(_In_ int _Code);
_CRTIMP __declspec(noreturn) void __cdecl _exit(_In_ int _Code);
_CRTIMP void __cdecl abort(void);
Trovo strano che non ci sia noreturn
annotazione abort()
. Qualcuno sa una ragione per questo? E 'un errore?
EDIT: In VS2008, è lo stesso, ma le linee di 371-373 stdlib.h
La mancanza del noreturn
annotazione è innescare error C4716.
Ulteriori riferimenti: C++0x proposal for standardization of the noreturn
annotation, che dice che abort
dovrebbe portarlo.
MODIFICA: Sembra che un gruppo di discussioni sia scomparso con una risposta cancellata, ma il suo significato è trattato in Defect Report #048.
bella domanda! Nella libc del mondo linux è contrassegnato come noreturn. –