PlatformDef.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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 /** @since version 3.12.0 */
  44. #endif
  45. #define RVC_UNUSED(x) (void)(x)
  46. #endif //_RVC_PLATFORM_DEFINIED_H__