// if the /OPT:REF linker option is used. We defined a macro as this is a\r
// a non standard extension\r
//\r
-#if defined(_MSC_EXTENSIONS) && _MSC_VER < 1800 && !defined (MDE_CPU_EBC)\r
+#if defined(_MSC_VER) && _MSC_VER < 1800 && !defined (MDE_CPU_EBC)\r
///\r
/// Remove global variable from the linked image if there are no references to\r
/// it after all compiler and linker optimizations have been performed.\r
///\r
#define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name)\r
\r
-#if __APPLE__\r
+#ifdef __APPLE__\r
//\r
// Apple extension that is used by the linker to optimize code size\r
// with assembly functions. Put at the end of your .S files\r
\r
#elif defined(__GNUC__) || defined(__clang__)\r
\r
-#if defined(MDE_CPU_X64) && !defined(NO_MSABI_VA_FUNCS) && !defined(__clang__)\r
+#if defined(MDE_CPU_X64) && !defined(NO_MSABI_VA_FUNCS)\r
//\r
// X64 only. Use MS ABI version of GCC built-in macros for variable argument lists.\r
//\r
@return Offset, in bytes, of field.\r
\r
**/\r
-#ifdef __GNUC__\r
-#if __GNUC__ >= 4\r
+#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)\r
#define OFFSET_OF(TYPE, Field) ((UINTN) __builtin_offsetof(TYPE, Field))\r
#endif\r
-#endif\r
\r
#ifndef OFFSET_OF\r
#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))\r
**/\r
#ifdef MDE_CPU_EBC\r
#define STATIC_ASSERT(Expression, Message)\r
-#elif _MSC_EXTENSIONS\r
+#elif defined(_MSC_EXTENSIONS)\r
#define STATIC_ASSERT static_assert\r
#else\r
#define STATIC_ASSERT _Static_assert\r