Re: _isnan() on Windows
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Emre Hasegeli <emre@hasegeli.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>,
Thomas Munro <thomas.munro@enterprisedb.com>,
Andres Freund <andres@anarazel.de>
Date: 2018-07-10T19:55:13Z
Lists: pgsql-hackers
Alvaro Herrera <alvherre@2ndquadrant.com> writes: > On 2018-Jul-10, Emre Hasegeli wrote: >> isnan() function is evidently not present on <math.h> on Windows >> before Visual Studio 2013. We define it on win32_port.h using >> _isnan(). However _isnan() is also not present. It is on <float.h>. >> The patch is attached to include this from win32_port.h. >> >> Thanks to Thomas Munro for point this out to me [1]. It is hard to >> notice this issue without testing the changes on Windows. > Oh, it looks like commits 33a7101281c6, 8e211f539146, 86dbbf20d849 > (probably others) papered over this by the expedient of adding #include > <float.h> to random .c files rather than your patch, which seems the > proper fix. I disagree --- including <float.h> in c.h, as this would have us do, seems like a huge expansion of the visibility of that header. Moreover, doing that only on Windows seems certain to lead to missing-header problems in the reverse direction, ie patches developed on Windows will fail elsewhere. I think we should stick with the existing coding convention of including that only in the specific .c files that need it. regards, tom lane
Commits
-
Silence MSVC warnings about redefinition of isnan
- d5d7f7f3b78e 12.0 landed
-
Rethink how to get float.h in old Windows API for isnan/isinf
- f2c587067a8e 12.0 landed