Re: _WINSOCK_DEPRECATED_NO_WARNINGS

From: Glen Knowles <gknowles(at)ieee(dot)org>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: _WINSOCK_DEPRECATED_NO_WARNINGS
Date: 2017-11-17 03:28:19
Message-ID: CAJCH0yD6bP_qGxawjawWNCJdrL1ncg-Yfey7TCYWfsFTYvdBbA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Nov 16, 2017 at 8:37 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> * Also for VS2015, add a define that stops compiler complaints about
> * using the old Winsock API.
> */
> #if defined(_MSC_VER) && _MSC_VER >= 1900
> #define _WINSOCK_DEPRECATED_NO_WARNINGS
>
> but evidently it chose the wrong cutoff for when to enable that
> symbol, because woodlouse is (or claims to be) running VS2013.
>
>
It's actually checking the wrong thing, the problem is the version of the
Windows SDK, and while the one installed by default with VS2015 might be
the right place to cutoff it's not uncommon to have multiple versions of
the SDK (and VS) in various combinations.

To check against the SDK you'd need something like:
#include <ntverp.h>
#if VER_PRODUCTBUILD >= 8100
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#endif

> Is there any good reason not to just define
> _WINSOCK_DEPRECATED_NO_WARNINGS unconditionally? Presumably
> it would have no effect on VS versions too old to know the symbol.
>

Or you could just define it unconditionally. :)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Fabrízio de Royes Mello 2017-11-17 03:38:01 Re: [HACKERS] [PATCH] A hook for session start
Previous Message Michael Paquier 2017-11-17 02:31:48 Re: [HACKERS] Refactoring identifier checks to consistently use strcmp