| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //
- // Copyright (c) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE file in the project root for full license information.
- //
- /*++
- --*/
- #ifndef __PAL_ASSERT_H__
- #define __PAL_ASSERT_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef __cplusplus
- //
- // C_ASSERT() can be used to perform many compile-time assertions:
- // type sizes, field offsets, etc.
- //
- #define C_ASSERT(e) static_assert(e, #e)
- //
- // CPP_ASSERT() can be used within a class definition, to perform a
- // compile-time assertion involving private names within the class.
- //
- #define CPP_ASSERT(n, e) static_assert(e, #e)
- #endif // __cplusplus
- #if defined(_DEBUG)
- #define _ASSERTE(e) do { \
- if (!(e)) { \
- fprintf (stderr, \
- "ASSERT FAILED\n" \
- "\tExpression: %s\n" \
- "\tLocation: line %d in %s\n" \
- "\tFunction: %s\n" \
- "\tProcess: %d\n", \
- #e, __LINE__, __FILE__, __FUNCTION__, \
- GetCurrentProcessId()); \
- __builtin_trap(); \
- } \
- }while (0)
- #else // !DEBUG
- #define _ASSERTE(e) ((void)0)
- #endif
- #ifndef assert
- #define assert(e) _ASSERTE(e)
- #endif // assert
- #ifdef __cplusplus
- }
- #endif
- #endif // __PAL_ASSERT_H__
|