From cb784c89505c6f45ec0a90a6d6e84ee6f4c76aaf Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos Date: Wed, 19 Apr 2006 08:40:53 +0000 Subject: [PATCH] * include/winnt.h, include/ddk/winddk.h (FIELD_OFFSET): Compile with recent C++ compiler such as gcc 3.4. * include/ddk/winddk.h: Ditto. --- winsup/w32api/ChangeLog | 6 ++++++ winsup/w32api/include/ddk/winddk.h | 5 +++++ winsup/w32api/include/winnt.h | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog index 2c1df14c4..91b930b07 100644 --- a/winsup/w32api/ChangeLog +++ b/winsup/w32api/ChangeLog @@ -1,3 +1,9 @@ +2006-04-19 Dimitri Papadopoulos + + * include/winnt.h, include/ddk/winddk.h (FIELD_OFFSET): + Compile with recent C++ compiler such as gcc 3.4. + * include/ddk/winddk.h: Ditto. + 2006-04-19 Dimitri Papadopoulos * include/winuser.h (CharNextEx,CharNextExW,CharPrevEx,CharPrevExW): diff --git a/winsup/w32api/include/ddk/winddk.h b/winsup/w32api/include/ddk/winddk.h index 123a44a73..c9dabbb52 100644 --- a/winsup/w32api/include/ddk/winddk.h +++ b/winsup/w32api/include/ddk/winddk.h @@ -3967,9 +3967,14 @@ KefReleaseSpinLockFromDpcLevel( * IN PCHAR Field); */ #ifndef FIELD_OFFSET +#ifdef __cplusplus +#define FIELD_OFFSET(Type, Field) (reinterpret_cast \ + (&reinterpret_cast(static_cast(0)->Field))) +#else #define FIELD_OFFSET(Type, Field) \ ((LONG) (&(((Type *) 0)->Field))) #endif +#endif /* * PVOID diff --git a/winsup/w32api/include/winnt.h b/winsup/w32api/include/winnt.h index e6f071d79..219d99055 100644 --- a/winsup/w32api/include/winnt.h +++ b/winsup/w32api/include/winnt.h @@ -845,7 +845,12 @@ typedef DWORD FLONG; #define RTL_CRITSECT_TYPE 0 #define RTL_RESOURCE_TYPE 1 /* Also in winddk.h */ +#ifdef __cplusplus +#define FIELD_OFFSET(t,f) (reinterpret_cast \ + (&reinterpret_cast(static_cast(0)->f))) +#else #define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f)) +#endif #ifndef CONTAINING_RECORD #define CONTAINING_RECORD(address, type, field) \ ((type*)((PCHAR)(address) - (PCHAR)(&((type *)0)->field))) -- 2.43.5