From d566b182a54ff3bba1bfc71e235bb1f46996766c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 14 Aug 2003 21:08:41 +0000 Subject: [PATCH] warning fixes for Borland git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/ptr_scpd.h | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/include/wx/ptr_scpd.h b/include/wx/ptr_scpd.h index 79ed8f3f00..785b03603e 100644 --- a/include/wx/ptr_scpd.h +++ b/include/wx/ptr_scpd.h @@ -30,22 +30,28 @@ #include "wx/defs.h" -/* checked deleters are used to make sure that the - type being deleted is really a complete type. - - Jesse Lovelace +/* + checked deleters are used to make sure that the type being deleted is really + a complete type.: otherwise sizeof() would result in a compile-time error + + do { ... } while ( 0 ) construct is used to have an anonymous scope + (otherwise we could have name clashes between different "complete"s) but + still force a semicolon after the macro */ -#define wxCHECKED_DELETE(ptr) \ - if (true) { \ - typedef char complete[sizeof(*ptr)]; \ - delete ptr; \ - } +#define wxCHECKED_DELETE(ptr) \ + do \ + { \ + typedef char complete[sizeof(*ptr)]; \ + delete ptr; \ + } while ( 0 ) -#define wxCHECKED_DELETE_ARRAY(ptr) \ - if (true) { \ - typedef char complete[sizeof(*ptr)]; \ - delete [] ptr; \ - } +#define wxCHECKED_DELETE_ARRAY(ptr) \ + do \ + { \ + typedef char complete[sizeof(*ptr)]; \ + delete [] ptr; \ + } while ( 0 ) /* These scoped pointers are *not* assignable and cannot be used within a container. Look for wxDECLARE_SHARED_PTR for this