From bccfc73acde97cdb76ba36558ed394e89d3c808b Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 25 Mar 2026 15:03:30 +0100 Subject: [PATCH] Disable warnings in system headers in MSVC This is similar to the standard behavior in GCC. For MSVC, we set all headers in angle brackets to be considered system headers. (GCC goes by path, not include style.) The required option is available since VS 2017. (Before VS 2019 version 16.10, the additional option /experimental:external is required, but per discussion in [0], we effectively require 16.11, so this shouldn't be a problem.) [0]: https://www.postgresql.org/message-id/04ab76a3-186c-4a37-8076-e6882ebf9d43%40eisentraut.org Then, we can remove one workaround for avoiding a warning from a system header. (And some warnings to be enabled in the future could benefit from this.) Reviewed-by: Bertrand Drouvot Discussion: https://www.postgresql.org/message-id/flat/aa73q1aT0A3/vke/%40ip-10-97-1-34.eu-west-3.compute.internal --- meson.build | 4 ++++ src/backend/port/win32/crashdump.c | 14 -------------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/meson.build b/meson.build index 0a181909fab..79cc7b4e758 100644 --- a/meson.build +++ b/meson.build @@ -2309,6 +2309,10 @@ if cc.get_id() == 'msvc' '/w24062', # enumerator 'identifier' in switch of enum 'enumeration' is not handled [like -Wswitch] '/w24102', # unreferenced label [like -Wunused-label] '/w24777', # 'function' : format string 'string' requires an argument of type 'type1', but variadic argument number has type 'type2' [like -Wformat] + + # Disable warnings in system headers + '/external:anglebrackets', + '/external:W0', ] cppflags += [ diff --git a/src/backend/port/win32/crashdump.c b/src/backend/port/win32/crashdump.c index 05790ba6ac1..0efeb9a9236 100644 --- a/src/backend/port/win32/crashdump.c +++ b/src/backend/port/win32/crashdump.c @@ -38,21 +38,7 @@ #include "postgres.h" -/* - * Some versions of the MS SDK contain "typedef enum { ... } ;" which the MS - * compiler quite sanely complains about. Well done, Microsoft. - * This pragma disables the warning just while we include the header. - * The pragma is known to work with all (as at the time of writing) supported - * versions of MSVC. - */ -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4091) -#endif #include -#ifdef _MSC_VER -#pragma warning(pop) -#endif /* * Much of the following code is based on CodeProject and MSDN examples,