Skip to content

Commit cf73619

Browse files
fo40225cdunn2001
authored andcommitted
refactoring cross compiler macro
1 parent ded953e commit cf73619

File tree

2 files changed

+74
-85
lines changed

2 files changed

+74
-85
lines changed

src/lib_json/json_reader.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include "json_tool.h"
1212
#endif // if !defined(JSON_IS_AMALGAMATION)
1313
#include <utility>
14-
#include <cstdio>
1514
#include <cassert>
1615
#include <cstring>
1716
#include <istream>
@@ -20,24 +19,25 @@
2019
#include <set>
2120
#include <limits>
2221

23-
#if defined(_MSC_VER)
24-
#if !defined(WINCE) && defined(__STDC_SECURE_LIB__) && _MSC_VER >= 1500 // VC++ 9.0 and above
25-
#define snprintf sprintf_s
26-
#elif _MSC_VER >= 1900 // VC++ 14.0 and above
27-
#define snprintf std::snprintf
28-
#else
29-
#define snprintf _snprintf
30-
#endif
31-
#elif defined(__ANDROID__) || defined(__QNXNTO__)
32-
#define snprintf snprintf
33-
#elif __cplusplus >= 201103L
34-
#if !defined(__MINGW32__) && !defined(__CYGWIN__)
35-
#define snprintf std::snprintf
36-
#endif
37-
#endif
22+
#if __cplusplus >= 201103L
23+
#include <cstdio>
24+
25+
#if !defined(snprintf)
26+
#define snprintf std::snprintf
27+
#endif
3828

39-
#if defined(__QNXNTO__)
40-
#define sscanf std::sscanf
29+
#if !defined(sscanf)
30+
#define sscanf std::sscanf
31+
#endif
32+
#else
33+
#include <stdio.h>
34+
35+
#if defined(_MSC_VER)
36+
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
37+
#if !defined(snprintf)
38+
#define snprintf _snprintf
39+
#endif
40+
#endif
4141
#endif
4242

4343
#if defined(_MSC_VER) && _MSC_VER >= 1400 // VC++ 8.0

src/lib_json/json_writer.cpp

Lines changed: 56 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -14,77 +14,66 @@
1414
#include <set>
1515
#include <cassert>
1616
#include <cstring>
17-
#include <cstdio>
18-
19-
#if defined(_MSC_VER) && _MSC_VER >= 1200 && _MSC_VER < 1800 // Between VC++ 6.0 and VC++ 11.0
20-
#include <float.h>
21-
#define isfinite _finite
22-
#elif defined(__sun) && defined(__SVR4) //Solaris
23-
#if !defined(isfinite)
24-
#include <ieeefp.h>
25-
#define isfinite finite
26-
#endif
27-
#elif defined(_AIX)
28-
#if !defined(isfinite)
29-
#include <math.h>
30-
#define isfinite finite
31-
#endif
32-
#elif defined(__hpux)
33-
#if !defined(isfinite)
34-
#if defined(__ia64) && !defined(finite)
35-
#define isfinite(x) ((sizeof(x) == sizeof(float) ? \
36-
_Isfinitef(x) : _IsFinite(x)))
37-
#else
38-
#include <math.h>
39-
#define isfinite finite
40-
#endif
41-
#endif
42-
#else
43-
#include <cmath>
44-
#if !(defined(__QNXNTO__)) // QNX already defines isfinite
45-
#define isfinite std::isfinite
46-
#endif
47-
#endif
4817

49-
#if defined(_MSC_VER)
50-
#if !defined(WINCE) && defined(__STDC_SECURE_LIB__) && _MSC_VER >= 1500 // VC++ 9.0 and above
51-
#define snprintf sprintf_s
52-
#elif _MSC_VER >= 1900 // VC++ 14.0 and above
53-
#define snprintf std::snprintf
54-
#else
55-
#define snprintf _snprintf
56-
#endif
57-
#elif defined(__ANDROID__) || defined(__QNXNTO__)
58-
#define snprintf snprintf
59-
#elif __cplusplus >= 201103L
60-
#if !defined(__MINGW32__) && !defined(__CYGWIN__)
61-
#define snprintf std::snprintf
62-
#endif
63-
#endif
18+
#if __cplusplus >= 201103L
19+
#include <cmath>
20+
#include <cstdio>
6421

65-
#if defined(__BORLANDC__)
66-
#include <float.h>
67-
#define isfinite _finite
68-
#define snprintf _snprintf
69-
#endif
22+
#if !defined(isnan)
23+
#define isnan std::isnan
24+
#endif
7025

71-
#if defined(_MSC_VER) && !defined(__clang__)
72-
#if _MSC_VER >= 1900 && defined(_WIN64)
73-
#include <math.h>
74-
#define isnan _isnanf
75-
#else
76-
#include <float.h>
77-
#define isnan _isnan
78-
#endif
79-
#elif __cplusplus >= 201103L
80-
#include <cmath>
81-
#define isnan std::isnan
26+
#if !defined(isfinite)
27+
#define isfinite std::isfinite
28+
#endif
29+
30+
#if !defined(snprintf)
31+
#define snprintf std::snprintf
32+
#endif
8233
#else
83-
#include <math.h>
84-
#if !define(isnan)
85-
// IEEE standard states that NaN values will not compare to themselves
86-
#define isnan(x) (x!=x)
87-
#endif
34+
#include <math.h>
35+
#include <stdio.h>
36+
37+
#if defined(_MSC_VER)
38+
#if !defined(isnan)
39+
#include <float.h>
40+
#define isnan _isnan
41+
#endif
42+
43+
#if !defined(isfinite)
44+
#include <float.h>
45+
#define isfinite _finite
46+
#endif
47+
48+
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
49+
#if !defined(snprintf)
50+
#define snprintf _snprintf
51+
#endif
52+
#endif
53+
54+
#if defined(__sun) && defined(__SVR4) //Solaris
55+
#if !defined(isfinite)
56+
#include <ieeefp.h>
57+
#define isfinite finite
58+
#endif
59+
#endif
60+
61+
#if defined(__hpux)
62+
#if !defined(isfinite)
63+
#if defined(__ia64) && !defined(finite)
64+
#define isfinite(x) ((sizeof(x) == sizeof(float) ? _Isfinitef(x) : _IsFinite(x)))
65+
#endif
66+
#endif
67+
#endif
68+
69+
#if !defined(isnan)
70+
// IEEE standard states that NaN values will not compare to themselves
71+
#define isnan(x) (x!=x)
72+
#endif
73+
74+
#if !defined(isfinite)
75+
#define isfinite finite
76+
#endif
8877
#endif
8978

9079
#if defined(_MSC_VER) && _MSC_VER >= 1400 // VC++ 8.0

0 commit comments

Comments
 (0)