diff --git a/src/zxing/zxing/ZXing.h b/src/zxing/zxing/ZXing.h index 99924e0..6d95f2d 100644 --- a/src/zxing/zxing/ZXing.h +++ b/src/zxing/zxing/ZXing.h @@ -41,16 +41,20 @@ namespace zxing { inline bool isnan_z(float v) {return std::isnan(v) != 0;} inline bool isnan_z(double v) {return std::isnan(v) != 0;} -inline float nan() {return std::numeric_limits::quiet_NaN();} } -#else - -//#include - +#elif (__cplusplus >= 201103L) +#include +namespace zxing { +inline bool isnan_z(float v) { + return std::isnan(v); +} +inline bool isnan_z(double v) { + return std::isnan(v); +} +} +#elif(__STDC_VERSION__ >= 199901L) #include - - namespace zxing { inline bool isnan_z(float v) { return isnan(v); @@ -58,11 +62,24 @@ inline bool isnan_z(float v) { inline bool isnan_z(double v) { return isnan(v); } -inline float nan() {return std::numeric_limits::quiet_NaN();} } - +#else +namespace zxing { +inline bool isnan_z(float v) { + volatile float d = v; + return d != d; +} +inline bool isnan_z(double v) { + volatile double d = v; + return d != d; +} +} #endif +namespace zxing { + inline float nan() {return std::numeric_limits::quiet_NaN();} +} + #if ZXING_DEBUG #include