James Kanze
12/2/2008 1:03:00 PM
On Dec 1, 9:55 pm, Mosfet <mos...@anonymous.org> wrote:
> I am looking at some source code and in one file there is the following
> definition :
It looks more like C than C++. The naming conventions are also
illegal, resulting in a lot of undefined behavior (both in C and
in C++). However...
> typedef enum _EXCEPTION_DISPOSITION {
> ExceptionContinueExecution,
> ExceptionContinueSearch,
> ExceptionNestedException,
> ExceptionCollidedUnwind,
> ExceptionExecuteHandler
> } EXCEPTION_DISPOSITION;
> typedef EXCEPTION_DISPOSITION EXCEPTION_ROUTINE (
> struct _EXCEPTION_RECORD *ExceptionRecord,
> void *EstablisherFrame,
> struct _CONTEXT *ContextRecord,
> struct _DISPATCHER_CONTEXT *DispatcherContext
> );
> typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE;
> EXCEPTION_ROUTINE __C_specific_handler;
> I am puzzled by the EXCEPTION_ROUTINE definition, it looks
> like a function pointer but without the *. Is it a function
> pointer ?
No. It's a function (type). You can use it to declare
functions, but not to define them. Thus, __C_specific_handler
is an (extern) function, or it would be if the name didn't
trigger undefined behavior.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34