From 0428da18a3398550f14c523cec39130cc03a8a15 Mon Sep 17 00:00:00 2001 From: Joaquim Date: Wed, 20 Nov 2024 11:41:32 +0000 Subject: [PATCH 1/2] Apprently new VS headers (or other Win .h) drop "#define NAN". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR defines it when it«s not found (Windows only) --- src/gmt_common_math.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/gmt_common_math.h b/src/gmt_common_math.h index 04be6786c03..5722d7a4bf6 100644 --- a/src/gmt_common_math.h +++ b/src/gmt_common_math.h @@ -65,6 +65,17 @@ extern "C" { # define int64_abs(x) ((int64_t)(((x) >= 0) ? (x) : -(x))) #endif +/* Apparently NAN may not be defined anymore in new Visual Studio headers. + See https://github.com/conda-forge/gmt-feedstock/pull/302#issuecomment-2487473474 + I found it in, and recopying it here: + "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\ucrt\corecrt_math.h" +*/ +#ifdef _WIN32 +# ifndef NAN +# define NAN (-(float)(((float)(1e+300 * 1e+300)) * 0.0F)) +# endif +#endif + #ifdef __CYGWIN__ /* See http://gmt.soest.hawaii.edu/boards/1/topics/5428 */ #ifdef __x86_64 #define lrint(x) ((long int)(int)lrint(x)) From d8d68c35a8e883c80850955bc6fb2d0f26d5ba1a Mon Sep 17 00:00:00 2001 From: Joaquim Date: Wed, 20 Nov 2024 13:01:02 +0000 Subject: [PATCH 2/2] Since NAN is handled in gmt_notposix.h, move the new definition to that file. --- src/gmt_common_math.h | 11 ----------- src/gmt_notposix.h | 4 ++-- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/src/gmt_common_math.h b/src/gmt_common_math.h index 5722d7a4bf6..04be6786c03 100644 --- a/src/gmt_common_math.h +++ b/src/gmt_common_math.h @@ -65,17 +65,6 @@ extern "C" { # define int64_abs(x) ((int64_t)(((x) >= 0) ? (x) : -(x))) #endif -/* Apparently NAN may not be defined anymore in new Visual Studio headers. - See https://github.com/conda-forge/gmt-feedstock/pull/302#issuecomment-2487473474 - I found it in, and recopying it here: - "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\ucrt\corecrt_math.h" -*/ -#ifdef _WIN32 -# ifndef NAN -# define NAN (-(float)(((float)(1e+300 * 1e+300)) * 0.0F)) -# endif -#endif - #ifdef __CYGWIN__ /* See http://gmt.soest.hawaii.edu/boards/1/topics/5428 */ #ifdef __x86_64 #define lrint(x) ((long int)(int)lrint(x)) diff --git a/src/gmt_notposix.h b/src/gmt_notposix.h index 586c88d1365..570bdb9f612 100644 --- a/src/gmt_notposix.h +++ b/src/gmt_notposix.h @@ -331,8 +331,8 @@ #ifndef NAN # ifdef _MSC_VER -# include -# define NAN _Nan._Double + static const double _NAN = (-(float)(((float)(1e+300 * 1e+300)) * 0.0F)); +# define NAN _NAN # else /* _MSC_VER */ static const double _NAN = (HUGE_VAL-HUGE_VAL); # define NAN _NAN