diff --git a/src/common/HighScoresManager.cxx b/src/common/HighScoresManager.cxx index 2cfdce762..24b3cbaf8 100644 --- a/src/common/HighScoresManager.cxx +++ b/src/common/HighScoresManager.cxx @@ -41,7 +41,6 @@ */ #include -#include #include "OSystem.hxx" #include "PropsSet.hxx" @@ -463,8 +462,8 @@ Int32 HighScoresManager::convert(Int32 val, uInt32 maxVal, bool isBCD, //maxVal += zeroBased ? 0 : 1; maxVal -= zeroBased ? 1 : 0; const Int32 bits = isBCD - ? ceil(log(maxVal) / std::numbers::ln10 * 4) - : ceil(log(maxVal) / std::numbers::ln2); + ? ceil(log(maxVal) / BSPF::ln10 * 4) + : ceil(log(maxVal) / BSPF::ln2); // limit to maxVal's bits val %= 1 << bits; diff --git a/src/common/bspf.hxx b/src/common/bspf.hxx index 9ac400217..bdad46e24 100644 --- a/src/common/bspf.hxx +++ b/src/common/bspf.hxx @@ -47,7 +47,6 @@ using uInt64 = uint64_t; #include #include #include -#include #include #include #include @@ -59,6 +58,11 @@ using uInt64 = uint64_t; #include #include +// It seems not all C++20 implementations support this yet +#if __has_include() + #include +#endif + using std::cin; using std::cout; using std::cerr; @@ -117,8 +121,21 @@ static const string EmptyString(""); namespace BSPF { +#if __has_include() static constexpr float PI_f = std::numbers::pi_v; static constexpr double PI_d = std::numbers::pi_v; + static constexpr double ln10 = std::numbers::ln10; + static constexpr double ln2 = std::numbers::ln2; +#else + [[deprecated("C++20 implementation missing support.")]] + static constexpr float PI_f = 3.141592653589793238462643383279502884F; + [[deprecated("C++20 implementation missing support.")]] + static constexpr double PI_d = 3.141592653589793238462643383279502884; + [[deprecated("C++20 implementation missing support.")]] + static constexpr double ln10 = 2.302585092994045684017991454684364208; + [[deprecated("C++20 implementation missing support.")]] + static constexpr double ln2 = 0.693147180559945309417232121458176568; +#endif // CPU architecture type // This isn't complete yet, but takes care of all the major platforms