modernc.org/cc@v1.0.1/v2/headers/linux_arm/usr/include/assert.h (about) 1 /* Copyright (C) 1991-2016 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, see 16 <http://www.gnu.org/licenses/>. */ 17 18 /* 19 * ISO C99 Standard: 7.2 Diagnostics <assert.h> 20 */ 21 22 #ifdef _ASSERT_H 23 24 #undef _ASSERT_H 25 #undef assert 26 #undef __ASSERT_VOID_CAST 27 28 #ifdef __USE_GNU 29 #undef assert_perror 30 #endif 31 32 #endif /* assert.h */ 33 34 #define _ASSERT_H 1 35 #include <features.h> 36 37 #if defined __cplusplus && __GNUC_PREREQ (2,95) 38 #define __ASSERT_VOID_CAST static_cast<void> 39 #else 40 #define __ASSERT_VOID_CAST (void) 41 #endif 42 43 /* void assert (int expression); 44 45 If NDEBUG is defined, do nothing. 46 If not, and EXPRESSION is zero, print an error message and abort. */ 47 48 #ifdef NDEBUG 49 50 #define assert(expr) (__ASSERT_VOID_CAST (0)) 51 52 /* void assert_perror (int errnum); 53 54 If NDEBUG is defined, do nothing. If not, and ERRNUM is not zero, print an 55 error message with the error text for ERRNUM and abort. 56 (This is a GNU extension.) */ 57 58 #ifdef __USE_GNU 59 #define assert_perror(errnum) (__ASSERT_VOID_CAST (0)) 60 #endif 61 62 #else /* Not NDEBUG. */ 63 64 #ifndef _ASSERT_H_DECLS 65 #define _ASSERT_H_DECLS 66 __BEGIN_DECLS 67 /* This prints an "Assertion failed" message and aborts. */ 68 extern void __assert_fail(const char *__assertion, const char *__file, unsigned int __line, const char *__function) 69 __THROW __attribute__ ((__noreturn__)); 70 71 /* Likewise, but prints the error text for ERRNUM. */ 72 extern void __assert_perror_fail(int __errnum, const char *__file, unsigned int __line, const char *__function) 73 __THROW __attribute__ ((__noreturn__)); 74 75 /* The following is not at all used here but needed for standard 76 compliance. */ 77 extern void __assert(const char *__assertion, const char *__file, int __line) 78 __THROW __attribute__ ((__noreturn__)); 79 80 __END_DECLS 81 #endif /* Not _ASSERT_H_DECLS */ 82 #define assert(expr) \ 83 ((expr) \ 84 ? __ASSERT_VOID_CAST (0) \ 85 : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION)) 86 #ifdef __USE_GNU 87 #define assert_perror(errnum) \ 88 (!(errnum) \ 89 ? __ASSERT_VOID_CAST (0) \ 90 : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION)) 91 #endif 92 /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__' 93 which contains the name of the function currently being defined. 94 This is broken in G++ before version 2.6. 95 C9x has a similar variable called __func__, but prefer the GCC one since 96 it demangles C++ function names. */ 97 #if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4) 98 #define __ASSERT_FUNCTION __PRETTY_FUNCTION__ 99 #else 100 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L 101 #define __ASSERT_FUNCTION __func__ 102 #else 103 #define __ASSERT_FUNCTION ((const char *) 0) 104 #endif 105 #endif 106 #endif /* NDEBUG. */ 107 #if defined __USE_ISOC11 && !defined __cplusplus 108 #undef static_assert 109 #define static_assert _Static_assert 110 #endif