File Index Symbol Index

//
// vcruntime.h
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Declarations used throughout the VCRuntime library.
//
#pragma once
//
// Note on use of "deprecate":
//
// Various places in this header and other headers use
// __declspec(deprecate) or macros that have the term DEPRECATE in them.
// We use "deprecate" here ONLY to signal the compiler to emit a warning
// about these items. The use of "deprecate" should NOT be taken to imply
// that any standard committee has deprecated these functions from the
// relevant standards. In fact, these functions are NOT deprecated from
// the standard.
//
// Full details can be found in our documentation by searching for
// "Security Enhancements in the CRT".
//
#ifndef _VCRUNTIME_H
#define _VCRUNTIME_H
#ifndef _UCRT
#define _UCRT #endif
// The _CRTIMP macro is not used in the VCRuntime or the CoreCRT anymore, but
// there is a lot of existing code that declares CRT functions using this macro,
// and if we remove its definition, we break that existing code. It is thus
// defined here only for compatibility.
#ifndef _CRTIMP
#define _VCRT_DEFINED_CRTIMP
#if defined CRTDLL && defined _CRTBLD
#define _CRTIMP __declspec(dllexport) #else
#ifdef _DLL
#define _CRTIMP __declspec(dllimport)
#else
#define _CRTIMP #endif #endif #endif
#include <sal.h> #include <vadefs.h>
// All C headers have a common prologue and epilogue, to enclose the header in
// an extern "C" declaration when the header is #included in a C++ translation
// unit and to push/pop the packing.
#if defined __cplusplus
#define _CRT_BEGIN_C_HEADER \
__pragma(pack(push, _CRT_PACKING)) \
extern "C" {
#define _CRT_END_C_HEADER \
} \
__pragma(pack(pop))
#elif defined __midl
#define _CRT_BEGIN_C_HEADER \
cpp_quote("__pragma(pack(push, _CRT_PACKING))") \
cpp_quote("extern \"C\" {")
#define _CRT_END_C_HEADER \
cpp_quote("}") \
cpp_quote("__pragma(pack(pop))")
#else
#define _CRT_BEGIN_C_HEADER \
__pragma(pack(push, _CRT_PACKING))
#define _CRT_END_C_HEADER \
__pragma(pack(pop))
#endif
#ifndef _HAS_EXCEPTIONS // Predefine as 0 to disable exceptions
#ifdef _KERNEL_MODE
#define _HAS_EXCEPTIONS 0
#else
#define _HAS_EXCEPTIONS 1 #endif /* _KERNEL_MODE */ #endif /* _HAS_EXCEPTIONS */
#define _CRT_STRINGIZE_(x) #x
#define _CRT_STRINGIZE(x) _CRT_STRINGIZE_(x)
#define _CRT_WIDE_(s) L ## s
#define _CRT_WIDE(s) _CRT_WIDE_(s)
#define _CRT_CONCATENATE_(a, b) a ## b
#define _CRT_CONCATENATE(a, b) _CRT_CONCATENATE_(a, b)
#define _CRT_UNPARENTHESIZE_(...) __VA_ARGS__
#define _CRT_UNPARENTHESIZE(...) _CRT_UNPARENTHESIZE_ __VA_ARGS__
#ifndef _VCRTIMP
#if defined _CRTIMP && !defined _VCRT_DEFINED_CRTIMP
#define _VCRTIMP _CRTIMP #elif defined _VCRT_BUILD && defined CRTDLL
#define _VCRTIMP __declspec(dllexport) #else
#define _VCRTIMP #endif #endif
#ifndef _MRTIMP
#if defined MRTDLL && defined _CRTBLD && !defined _M_CEE_PURE
#define _MRTIMP __declspec(dllexport) #else
#define _MRTIMP #endif #endif
// Definitions of calling conventions used code sometimes compiled as managed
#if defined _M_CEE_PURE || defined MRTDLL
#define __CLRCALL_OR_CDECL __clrcall
#define __CLR_OR_THIS_CALL __clrcall #else
#define __CLRCALL_OR_CDECL __cdecl
#define __CLR_OR_THIS_CALL #endif
#ifdef _M_CEE_PURE
#define __CLRCALL_PURE_OR_CDECL __clrcall
#else
#define __CLRCALL_PURE_OR_CDECL __cdecl #endif
#define __CRTDECL __CLRCALL_PURE_OR_CDECL
// Definitions of common __declspecs
#define _VCRT_NOALIAS __declspec(noalias)
#define _VCRT_RESTRICT __declspec(restrict)
#if !defined _MSC_VER || _MSC_VER >= 1900
#define _VCRT_ALLOCATOR __declspec(allocator)
#else
#define _VCRT_ALLOCATOR #endif
#if defined _M_CEE && defined _M_X64
#define _VCRT_JIT_INTRINSIC __declspec(jitintrinsic) #else
#define _VCRT_JIT_INTRINSIC #endif
#ifdef __midl
#define _VCRT_ALIGN(x)
#else
#define _VCRT_ALIGN(x) __declspec(align(x)) #endif
#ifndef _CONST_RETURN
#ifdef __cplusplus
#define _CRT_CONST_CORRECT_OVERLOADS
#define _CONST_RETURN const
#else
#define _CONST_RETURN #endif #endif
// For backwards compatibility
#define _WConst_return _CONST_RETURN
// Definitions of common types
#ifdef _WIN64
typedef unsigned __int64 size_t;
typedef __int64 ptrdiff_t;
typedef __int64 intptr_t;
#else
typedef
unsigned
int
size_t
;
typedef
int
ptrdiff_t
;
typedef
int
intptr_t
;
#endif
#if defined __cplusplus
typedef
bool
__vcrt_bool
;
#elif defined __midl
// MIDL understands neither bool nor _Bool. Use char as a best-fit
// replacement (the differences won't matter in practice).
typedef char __vcrt_bool;
#else
typedef _Bool __vcrt_bool; #endif
// Indicate that these common types are defined
#ifndef _SIZE_T_DEFINED
#define _SIZE_T_DEFINED #endif
#ifndef _PTRDIFF_T_DEFINED
#define _PTRDIFF_T_DEFINED #endif
#ifndef _INTPTR_T_DEFINED
#define _INTPTR_T_DEFINED #endif
// Provide a typedef for wchar_t for use under /Zc:wchar_t-
#ifndef _WCHAR_T_DEFINED
#define _WCHAR_T_DEFINED
typedef unsigned short wchar_t;
#endif
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0) #endif #endif
#if defined _M_X64 || defined _M_ARM || defined _M_ARM64
#define _UNALIGNED __unaligned #else
#define _UNALIGNED #endif
#ifdef __cplusplus
extern
"C++"
{
template
<
typename
_CountofType
,
size_t
_SizeOfArray
>
#define __crt_countof(_Array) (sizeof(*__countof_helper(_Array)) + 0)
}
#else
#define __crt_countof(_Array) (sizeof(_Array) / sizeof(_Array[0])) #endif
// See note on use of "deprecate" at the top of this file
#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
#if defined _CRT_SECURE_NO_DEPRECATE && !defined _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS #endif
#ifndef _CRT_INSECURE_DEPRECATE
#ifdef _CRT_SECURE_NO_WARNINGS
#define _CRT_INSECURE_DEPRECATE(_Replacement)
#else
#define _CRT_INSECURE_DEPRECATE(_Replacement) _CRT_DEPRECATE_TEXT( \
"This function or variable may be unsafe. Consider using " \
#_Replacement \
" instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " \
"See online help for details.") #endif #endif
#if defined _CRT_SECURE_DEPRECATE_MEMORY && !defined _CRT_SECURE_WARNINGS_MEMORY
#define _CRT_SECURE_WARNINGS_MEMORY #endif
#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
#ifndef _CRT_SECURE_WARNINGS_MEMORY
#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
#else
#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement) \
_CRT_INSECURE_DEPRECATE(_Replacement) #endif #endif
#if !defined _M_CEE && !defined __midl
void
__cdecl
__security_init_cookie
(
void
);
#ifdef _M_IX86
__declspec
(noreturn)
void
__cdecl
__report_gsfailure
(
void
);
#else /* _M_IX86 */
void __cdecl __security_check_cookie(_In_ uintptr_t _StackCookie);
__declspec(noreturn) void __cdecl __report_gsfailure(_In_ uintptr_t _StackCookie); #endif #endif
extern
uintptr_t
;
#ifndef _VCRT_BUILD
#define __vcrt_malloc_normal(_Size) malloc(_Size)
#define __vcrt_calloc_normal(_Count, _Size) calloc(_Count, _Size)
#define __vcrt_free_normal(_Memory) free(_Memory) #endif
#endif // _VCRUNTIME_H