/* xkeycheck.h internal header */
#pragma once
#ifndef _XKEYCHECK_H
#define _XKEYCHECK_H
#ifndef RC_INVOKED

#ifndef _ALLOW_KEYWORD_MACROS

 #if !defined(__cplusplus)

  #if defined(auto)	/* check C keywords */  \
	|| defined(break) \
	|| defined(case) \
	|| defined(char) \
	|| defined(const) \
	|| defined(continue) \
	|| defined(default) \
	|| defined(do) \
	|| defined(double) \
	|| defined(else) \
	|| defined(enum) \
	|| defined(extern) \
	|| defined(float) \
	|| defined(for) \
	|| defined(goto) \
	|| defined(if) \
	|| defined(inline) \
	|| defined(int) \
	|| defined(long) \
	|| defined(register) \
	|| defined(restrict) \
	|| defined(return) \
	|| defined(short) \
	|| defined(signed) \
	|| defined(sizeof) \
	|| defined(static) \
	|| defined(struct) \
	|| defined(switch) \
	|| defined(typedef) \
	|| defined(union) \
	|| defined(unsigned) \
	|| defined(void) \
	|| defined(volatile) \
	|| defined(while) \
	|| defined(_Bool) \
	|| defined(_Complex) \
	|| defined(_Imaginary)

   #define auto EMIT WARNING C4005
   #define break EMIT WARNING C4005
   #define case EMIT WARNING C4005
   #define char EMIT WARNING C4005
   #define const EMIT WARNING C4005
   #define continue EMIT WARNING C4005
   #define default EMIT WARNING C4005
   #define do EMIT WARNING C4005
   #define double EMIT WARNING C4005
   #define else EMIT WARNING C4005
   #define enum EMIT WARNING C4005
   #define extern EMIT WARNING C4005
   #define float EMIT WARNING C4005
   #define for EMIT WARNING C4005
   #define goto EMIT WARNING C4005
   #define if EMIT WARNING C4005
   #define inline EMIT WARNING C4005
   #define int EMIT WARNING C4005
   #define long EMIT WARNING C4005
   #define register EMIT WARNING C4005
   #define restrict EMIT WARNING C4005
   #define return EMIT WARNING C4005
   #define short EMIT WARNING C4005
   #define signed EMIT WARNING C4005
   #define sizeof EMIT WARNING C4005
   #define static EMIT WARNING C4005
   #define struct EMIT WARNING C4005
   #define switch EMIT WARNING C4005
   #define typedef EMIT WARNING C4005
   #define union EMIT WARNING C4005
   #define unsigned EMIT WARNING C4005
   #define void EMIT WARNING C4005
   #define volatile EMIT WARNING C4005
   #define while EMIT WARNING C4005
   #define _Bool EMIT WARNING C4005
   #define _Complex EMIT WARNING C4005
   #define _Imaginary EMIT WARNING C4005

   #error The C Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro.
  #endif /* defined... */

 #else /* __cplusplus is defined */

  #if defined(alignas)	/* check C++ keywords */ \
	|| defined(alignof) \
	|| defined(asm) \
	|| defined(auto) \
	|| defined(bool) \
	|| defined(break) \
	|| defined(case) \
	|| defined(catch) \
	|| defined(char) \
	|| defined(char16_t) \
	|| defined(char32_t) \
	|| defined(class) \
	|| defined(const) \
	|| defined(const_cast) \
	|| defined(constexpr) \
	|| defined(continue) \
	|| defined(decltype) \
	|| defined(default) \
	|| defined(delete) \
	|| defined(do) \
	|| defined(double) \
	|| defined(dynamic_cast) \
	|| defined(else) \
	|| defined(enum) \
	|| defined(explicit) \
	|| defined(export) \
	|| defined(extern) \
	|| defined(false) \
	|| defined(float) \
	|| defined(for) \
	|| defined(friend) \
	|| defined(goto) \
	|| defined(if) \
	|| defined(inline) \
	|| defined(int) \
	|| defined(long) \
	|| defined(mutable) \
	|| defined(namespace) \
	|| defined(new) && defined(_ENFORCE_BAN_OF_MACRO_NEW) \
	|| defined(noexcept) \
	|| defined(nullptr) \
	|| defined(operator) \
	|| defined(private) \
	|| defined(protected) \
	|| defined(public) \
	|| defined(register) \
	|| defined(reinterpret_cast) \
	|| defined(return) \
	|| defined(short) \
	|| defined(signed) \
	|| defined(sizeof) \
	|| defined(static) \
	|| defined(static_assert) \
	|| defined(static_cast) \
	|| defined(struct) \
	|| defined(switch) \
	|| defined(template) \
	|| defined(this) \
	|| defined(thread_local) \
	|| defined(throw) \
	|| defined(true) \
	|| defined(try) \
	|| defined(typedef) \
	|| defined(typeid) \
	|| defined(typename) \
	|| defined(union) \
	|| defined(unsigned) \
	|| defined(using) \
	|| defined(virtual) \
	|| defined(void) \
	|| defined(volatile) \
	|| defined(wchar_t) \
	|| defined(while) \
	|| defined(final)		/* check "identifiers with special meaning" */ \
	|| defined(override)	/* (also known as context-sensitive keywords) */ \
	|| defined(carries_dependency)	/* check attribute-tokens */ \
	|| defined(deprecated) && _HAS_CXX17 \
	|| defined(fallthrough) && _HAS_CXX17 \
	|| defined(maybe_unused) && _HAS_CXX17 \
	|| defined(nodiscard) && _HAS_CXX17 \
	|| defined(noreturn)

   #define alignas EMIT WARNING C4005
   #define alignof EMIT WARNING C4005
   #define asm EMIT WARNING C4005
   #define auto EMIT WARNING C4005
   #define bool EMIT WARNING C4005
   #define break EMIT WARNING C4005
   #define case EMIT WARNING C4005
   #define catch EMIT WARNING C4005
   #define char EMIT WARNING C4005
   #define char16_t EMIT WARNING C4005
   #define char32_t EMIT WARNING C4005
   #define class EMIT WARNING C4005
   #define const EMIT WARNING C4005
   #define const_cast EMIT WARNING C4005
   #define constexpr EMIT WARNING C4005
   #define continue EMIT WARNING C4005
   #define decltype EMIT WARNING C4005
   #define default EMIT WARNING C4005
   #define delete EMIT WARNING C4005
   #define do EMIT WARNING C4005
   #define double EMIT WARNING C4005
   #define dynamic_cast EMIT WARNING C4005
   #define else EMIT WARNING C4005
   #define enum EMIT WARNING C4005
   #define explicit EMIT WARNING C4005
   #define export EMIT WARNING C4005
   #define extern EMIT WARNING C4005
   #define false EMIT WARNING C4005
   #define float EMIT WARNING C4005
   #define for EMIT WARNING C4005
   #define friend EMIT WARNING C4005
   #define goto EMIT WARNING C4005
   #define if EMIT WARNING C4005
   #define inline EMIT WARNING C4005
   #define int EMIT WARNING C4005
   #define long EMIT WARNING C4005
   #define mutable EMIT WARNING C4005
   #define namespace EMIT WARNING C4005
   #ifdef _ENFORCE_BAN_OF_MACRO_NEW
    #define new EMIT WARNING C4005
   #endif /* _ENFORCE_BAN_OF_MACRO_NEW */
   #define noexcept EMIT WARNING C4005
   #define nullptr EMIT WARNING C4005
   #define operator EMIT WARNING C4005
   #define private EMIT WARNING C4005
   #define protected EMIT WARNING C4005
   #define public EMIT WARNING C4005
   #define register EMIT WARNING C4005
   #define reinterpret_cast EMIT WARNING C4005
   #define return EMIT WARNING C4005
   #define short EMIT WARNING C4005
   #define signed EMIT WARNING C4005
   #define sizeof EMIT WARNING C4005
   #define static EMIT WARNING C4005
   #define static_assert EMIT WARNING C4005
   #define static_cast EMIT WARNING C4005
   #define struct EMIT WARNING C4005
   #define switch EMIT WARNING C4005
   #define template EMIT WARNING C4005
   #define this EMIT WARNING C4005
   #define thread_local EMIT WARNING C4005
   #define throw EMIT WARNING C4005
   #define true EMIT WARNING C4005
   #define try EMIT WARNING C4005
   #define typedef EMIT WARNING C4005
   #define typeid EMIT WARNING C4005
   #define typename EMIT WARNING C4005
   #define union EMIT WARNING C4005
   #define unsigned EMIT WARNING C4005
   #define using EMIT WARNING C4005
   #define virtual EMIT WARNING C4005
   #define void EMIT WARNING C4005
   #define volatile EMIT WARNING C4005
   #define wchar_t EMIT WARNING C4005
   #define while EMIT WARNING C4005
   #define final EMIT WARNING C4005
   #define override EMIT WARNING C4005
   #define carries_dependency EMIT WARNING C4005
   #if _HAS_CXX17
    #define deprecated EMIT WARNING C4005
    #define fallthrough EMIT WARNING C4005
    #define maybe_unused EMIT WARNING C4005
    #define nodiscard EMIT WARNING C4005
   #endif /* _HAS_CXX17 */
   #define noreturn EMIT WARNING C4005

   #error The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro.
  #endif /* defined... */
 #endif /* defined(__cplusplus) */

#endif /* _ALLOW_KEYWORD_MACROS */

#endif /* RC_INVOKED */
#endif /* _XKEYCHECK_H */

/*
 * Copyright (c) by P.J. Plauger. All rights reserved.
 * Consult your license regarding permissions and restrictions.
V6.50:0009 */
