PlatformDef.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #ifndef _RVC_PLATFORM_DEFINIED_H__
  2. #define _RVC_PLATFORM_DEFINIED_H__
  3. #pragma once
  4. #if defined(linux) || defined(__linux) || defined(__linux__)
  5. # define RVC_OS_LINUX
  6. #elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER)
  7. # define RVC_OS_WIN
  8. #endif
  9. #if defined( _DEBUG ) || defined (__DEBUG__)
  10. # ifndef DEBUG
  11. # define DEBUG
  12. # endif
  13. #endif
  14. #if defined(DEBUG)
  15. #define WITH_DEBUG
  16. #elif defined(NDEBUG)
  17. #define WITH_NO_DEBUG
  18. #endif
  19. #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L)
  20. #define RVC_DEPRECATED(obj) [[deprecated]] obj
  21. #define RVC_DEPRECATED_VAR(text, obj) [[deprecated(text)]] obj
  22. #define RVC_NORETURN(obj) [[noreturn]] obj
  23. #elif defined(WIN32) && !defined(__CYGWIN__)
  24. #define RVC_DEPRECATED(obj) __declspec(deprecated) obj
  25. #define RVC_DEPRECATED_VAR(text, obj) __declspec(deprecated(text)) obj
  26. #define RVC_NORETURN(obj) __declspec(noreturn) obj
  27. #elif defined(__GNUC__)
  28. #define RVC_DEPRECATED(obj) obj __attribute__((deprecated))
  29. #define RVC_DEPRECATED_VAR(text, obj) obj __attribute__((deprecated(text)))
  30. #define RVC_NORETURN(obj) __attribute__((__noreturn__)) obj
  31. #else
  32. #define RVC_DEPRECATED(obj) obj
  33. #define RVC_DEPRECATED_VAR(text, obj) obj
  34. #define RVC_NORETURN(obj) obj
  35. #endif
  36. #if defined(__cplusplus) && (__cplusplus >= 201703L)
  37. #define RVC_ATTR_UNUSED [[maybe_unused]]
  38. #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202000L)
  39. #define RVC_ATTR_UNUSED [[maybe_unused]]
  40. #elif defined(__GNUC__) || defined(__clang__)
  41. #define RVC_ATTR_UNUSED __attribute__((unused))
  42. #else
  43. #define RVC_ATTR_UNUSED
  44. #endif
  45. #define RVC_UNUSED(x) (void)(x)
  46. #if !defined(_MSC_VER)
  47. #define RVC_DO_PRAGMA(x) _Pragma(#x)
  48. #else
  49. #define RVC_DO_PRAGMA(x) __pragma(#x)
  50. #endif
  51. #if defined(__GNUC__)
  52. #define RVC_PRAGMA_WARNING(msg) RVC_DO_PRAGMA(GCC warning #msg)
  53. #elif defined(__clang__)
  54. #define RVC_PRAGMA_WARNING(msg) RVC_DO_PRAGMA(GCC warning #msg)
  55. #elif defined(_MSC_VER) && (_MSC_VER >= 1920)
  56. #define RVC_PRAGMA_WARNING(msg) RVC_DO_PRAGMA(message \x28 #msg \x29)
  57. #else
  58. #define RVC_PRAGMA_WARNING(msg)
  59. #endif
  60. #endif //_RVC_PLATFORM_DEFINIED_H__