40 #ifndef picox_core_detail_compiler_xgcc_h_ 41 #define picox_core_detail_compiler_xgcc_h_ 45 #error This header file required 'GNU C/C++ Compiler' 49 #ifndef __STRICT_ANSI__ 50 #define X_HAS_TYPEOF (1) 51 #define X_TYPEOF(x) typeof(x) 52 #define X_HAS_STATEMENT_EXPRESSIONS (1) 56 #define X_HAS_VARIADIC_MACROS (1) 57 #define X_ALWAYS_INLINE static inline __attribute__((__always_inline__)) 58 #define X_LIKELY(x) __builtin_expect(!!(x), 1) 59 #define X_UNLIKELY(x) __builtin_expect(!!(x), 0) 60 #define X_MEMORY_BARRIER asm volatile ("" : : : "memory") 63 #if X_GNUC_PREREQ(3, 1) 64 #define X_DEPRECATED __attribute__((__deprecated__)) 66 #if X_GNUC_PREREQ(4, 5) 67 #define X_UNREACHABE __builtin_unreachable() 70 #define X_PACKED_PRE_BEGIN 71 #define X_PACKED_POST_BEGIN 72 #define X_PACKED_PRE_END __attribute__((__packed__)) 73 #define X_PACKED_POST_END 76 #ifdef X_INTERNAL_DEVMODE 82 #pragma GCC poison new delete class template typename 83 #pragma GCC poison private protected public operator 84 #pragma GCC poison friend mutable using namespace 85 #pragma GCC poison static_cast const_cast reinterpret_cast dynamic_cast 86 #pragma GCC poison explicit export 87 #pragma GCC poison virtual this typeid try catch throw 88 #pragma GCC poison cin cout cerr clog 91 #pragma GCC poison final nullptr override constexpr 92 #pragma GCC poison alignas alignof auto noexcept static_assert 93 #pragma GCC poison char16_t char32_t 94 #pragma GCC poison thread_local 99 #endif // picox_core_detail_compiler_xgcc_h_