Browse Source

Refine long type check

1vanK 3 năm trước cách đây
mục cha
commit
3200d2b369

+ 23 - 0
Source/Urho3D/Base/PrimitiveTypes.cpp

@@ -0,0 +1,23 @@
+// Copyright (c) 2008-2022 the Urho3D project
+// License: MIT
+
+#include <cstddef> // std::ptrdiff_t
+#include <cstdint> // std::intptr_t
+#include <limits> // std::numeric_limits
+
+// https://en.cppreference.com/w/cpp/language/types
+static_assert(std::numeric_limits<unsigned char>::digits == 8);
+static_assert(sizeof(short) == 2);
+static_assert(sizeof(int) == 4);
+static_assert(sizeof(long long) == 8);
+static_assert(sizeof(char32_t) == 4);
+
+#ifdef _WIN32 // Windows
+static_assert(sizeof(long) == 4);
+#else // Unix
+static_assert(sizeof(long) == sizeof(void*)); // 4 or 8
+#endif
+
+// Pointer arithmetics
+static_assert(sizeof(void*) == sizeof(std::ptrdiff_t));
+static_assert(sizeof(void*) == sizeof(std::intptr_t));

+ 2 - 18
Source/Urho3D/Base/PrimitiveTypes.h

@@ -3,23 +3,8 @@
 
 
 #pragma once
 #pragma once
 
 
-#include <cstddef> // std::byte, std::ptrdiff_t
-#include <cstdint> // std::intptr_t, std::int8_t, ...
-#include <limits> // std::numeric_limits
-
-
-// https://en.cppreference.com/w/cpp/language/types
-static_assert(std::numeric_limits<unsigned char>::digits == 8);
-static_assert(sizeof(short) == 2);
-static_assert(sizeof(int) == 4);
-static_assert(sizeof(long) == 4 || sizeof(long) == 8); // (Win32, Win64, Unix32) || Unix64
-static_assert(sizeof(long long) == 8);
-static_assert(sizeof(char32_t) == 4);
-
-// Pointer arithmetics
-static_assert(sizeof(void*) == sizeof(std::ptrdiff_t));
-static_assert(sizeof(void*) == sizeof(std::intptr_t));
-
+#include <cstddef> // std::byte
+#include <cstdint> // std::int8_t, ...
 
 
 // User can inject Urho3D::PrimitiveTypes into other namespace
 // User can inject Urho3D::PrimitiveTypes into other namespace
 namespace Urho3D::PrimitiveTypes
 namespace Urho3D::PrimitiveTypes
@@ -48,7 +33,6 @@ using hash64 = u64;
 
 
 } // namespace Urho3D::PrimitiveTypes
 } // namespace Urho3D::PrimitiveTypes
 
 
-
 namespace Urho3D
 namespace Urho3D
 {
 {