#ifndef _RVC_PLATFORM_DEFINIED_H__ #define _RVC_PLATFORM_DEFINIED_H__ #pragma once #if defined(linux) || defined(__linux) || defined(__linux__) # define RVC_OS_LINUX #elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) # define RVC_OS_WIN #endif #if defined( _DEBUG ) || defined (__DEBUG__) # ifndef DEBUG # define DEBUG # endif #endif #if defined(DEBUG) #define WITH_DEBUG #elif defined(NDEBUG) #define WITH_NO_DEBUG #endif #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L) #define RVC_DEPRECATED(obj) [[deprecated]] obj #define RVC_DEPRECATED_VAR(text, obj) [[deprecated(text)]] obj #define RVC_NORETURN(obj) [[noreturn]] obj #elif defined(WIN32) && !defined(__CYGWIN__) #define RVC_DEPRECATED(obj) __declspec(deprecated) obj #define RVC_DEPRECATED_VAR(text, obj) __declspec(deprecated(text)) obj #define RVC_NORETURN(obj) __declspec(noreturn) obj #elif defined(__GNUC__) #define RVC_DEPRECATED(obj) obj __attribute__((deprecated)) #define RVC_DEPRECATED_VAR(text, obj) obj __attribute__((deprecated(text))) #define RVC_NORETURN(obj) __attribute__((__noreturn__)) obj #else #define RVC_DEPRECATED(obj) obj #define RVC_DEPRECATED_VAR(text, obj) obj #define RVC_NORETURN(obj) obj #endif #if defined(__cplusplus) && (__cplusplus >= 201703L) #define RVC_ATTR_UNUSED [[maybe_unused]] #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202000L) #define RVC_ATTR_UNUSED [[maybe_unused]] #elif defined(__GNUC__) || defined(__clang__) #define RVC_ATTR_UNUSED __attribute__((unused)) #else #define RVC_ATTR_UNUSED #endif #define RVC_UNUSED(x) (void)(x) #if !defined(_MSC_VER) #define RVC_DO_PRAGMA(x) _Pragma(#x) #else #define RVC_DO_PRAGMA(x) __pragma(#x) #endif #if defined(__GNUC__) #define RVC_PRAGMA_WARNING(msg) RVC_DO_PRAGMA(GCC warning #msg) #elif defined(__clang__) #define RVC_PRAGMA_WARNING(msg) RVC_DO_PRAGMA(GCC warning #msg) #elif defined(_MSC_VER) && (_MSC_VER >= 1920) #define RVC_PRAGMA_WARNING(msg) RVC_DO_PRAGMA(message \x28 #msg \x29) #else #define RVC_PRAGMA_WARNING(msg) #endif #endif //_RVC_PLATFORM_DEFINIED_H__