27#if defined(__cplusplus)
28# define _SEH_PVOID_CAST(TYPE_, P_) ((TYPE_)(P_))
30# define _SEH_PVOID_CAST(TYPE_, P_) (P_)
33#if defined(FIELD_OFFSET)
34# define _SEH_FIELD_OFFSET FIELD_OFFSET
37# define _SEH_FIELD_OFFSET offsetof
40#if defined(CONTAINING_RECORD)
41# define _SEH_CONTAINING_RECORD CONTAINING_RECORD
43# define _SEH_CONTAINING_RECORD(ADDR_, TYPE_, FIELD_) \
44 ((TYPE_ *)(((char *)(ADDR_)) - _SEH_FIELD_OFFSET(TYPE_, FIELD_)))
48# define _SEH_CONCAT __CONCAT
50# define _SEH_CONCAT1(X_, Y_) X_ ## Y_
51# define _SEH_CONCAT(X_, Y_) _SEH_CONCAT1(X_, Y_)
60# define __inline inline
65#define _SEH_LOCALS_TYPENAME(BASENAME_) \
66 struct _SEH_CONCAT(_SEHLocalsTag, BASENAME_)
68#define _SEH_DEFINE_LOCALS(BASENAME_) \
69 _SEH_LOCALS_TYPENAME(BASENAME_)
71#define _SEH_DECLARE_LOCALS(BASENAME_) \
72 _SEH_LOCALS_TYPENAME(BASENAME_) _SEHLocals; \
73 _SEH_LOCALS_TYPENAME(BASENAME_) * _SEHPLocals; \
74 _SEHPLocals = &_SEHLocals;
static void *const _SEHDummyLocals