Dr Andrew Scott G7VAV

My photo
 
April 2024
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12


assert.h
001: /* Copyright (C) 1991,1992,1994-2001,2003,2004,2007
002:    Free Software Foundation, Inc.
003:    This file is part of the GNU C Library.
004: 
005:    The GNU C Library is free software; you can redistribute it and/or
006:    modify it under the terms of the GNU Lesser General Public
007:    License as published by the Free Software Foundation; either
008:    version 2.1 of the License, or (at your option) any later version.
009: 
010:    The GNU C Library is distributed in the hope that it will be useful,
011:    but WITHOUT ANY WARRANTY; without even the implied warranty of
012:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013:    Lesser General Public License for more details.
014: 
015:    You should have received a copy of the GNU Lesser General Public
016:    License along with the GNU C Library; if not, write to the Free
017:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
018:    02111-1307 USA.  */
019: 
020: /*
021:  *      ISO C99 Standard: 7.2 Diagnostics       <assert.h>
022:  */
023: 
024: #ifdef  _ASSERT_H
025: 
026: # undef _ASSERT_H
027: # undef assert
028: # undef __ASSERT_VOID_CAST
029: 
030: # ifdef __USE_GNU
031: #  undef assert_perror
032: # endif
033: 
034: #endif /* assert.h      */
035: 
036: #define _ASSERT_H       1
037: #include <features.h>
038: 
039: #if defined __cplusplus && __GNUC_PREREQ (2,95)
040: # define __ASSERT_VOID_CAST static_cast<void>
041: #else
042: # define __ASSERT_VOID_CAST (void)
043: #endif
044: 
045: /* void assert (int expression);
046: 
047:    If NDEBUG is defined, do nothing.
048:    If not, and EXPRESSION is zero, print an error message and abort.  */
049: 
050: #ifdef  NDEBUG
051: 
052: # define assert(expr)           (__ASSERT_VOID_CAST (0))
053: 
054: /* void assert_perror (int errnum);
055: 
056:    If NDEBUG is defined, do nothing.  If not, and ERRNUM is not zero, print an
057:    error message with the error text for ERRNUM and abort.
058:    (This is a GNU extension.) */
059: 
060: # ifdef __USE_GNU
061: #  define assert_perror(errnum) (__ASSERT_VOID_CAST (0))
062: # endif
063: 
064: #else /* Not NDEBUG.  */
065: 
066: #ifndef _ASSERT_H_DECLS
067: #define _ASSERT_H_DECLS
068: __BEGIN_DECLS
069: 
070: /* This prints an "Assertion failed" message and aborts.  */
071: extern void __assert_fail (__const char *__assertion, __const char *__file,
072:                            unsigned int __line, __const char *__function)
073:      __THROW __attribute__ ((__noreturn__));
074: 
075: /* Likewise, but prints the error text for ERRNUM.  */
076: extern void __assert_perror_fail (int __errnum, __const char *__file,
077:                                   unsigned int __line,
078:                                   __const char *__function)
079:      __THROW __attribute__ ((__noreturn__));
080: 
081: 
082: /* The following is not at all used here but needed for standard
083:    compliance.  */
084: extern void __assert (const char *__assertion, const char *__file, int __line)
085:      __THROW __attribute__ ((__noreturn__));
086: 
087: 
088: __END_DECLS
089: #endif /* Not _ASSERT_H_DECLS */
090: 
091: # define assert(expr)                                                   \
092:   ((expr)                                                               \
093:    ? __ASSERT_VOID_CAST (0)                                             \
094:    : __assert_fail (__STRING(expr), __FILE__, __LINE__, __ASSERT_FUNCTION))
095: 
096: # ifdef __USE_GNU
097: #  define assert_perror(errnum)                                         \
098:   (!(errnum)                                                            \
099:    ? __ASSERT_VOID_CAST (0)                                             \
100:    : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
101: # endif
102: 
103: /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
104:    which contains the name of the function currently being defined.
105:    This is broken in G++ before version 2.6.
106:    C9x has a similar variable called __func__, but prefer the GCC one since
107:    it demangles C++ function names.  */
108: # if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
109: #   define __ASSERT_FUNCTION    __PRETTY_FUNCTION__
110: # else
111: #  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
112: #   define __ASSERT_FUNCTION    __func__
113: #  else
114: #   define __ASSERT_FUNCTION    ((__const char *) 0)
115: #  endif
116: # endif
117: 
118: #endif /* NDEBUG.  */
119: 


for client 18.223.125.219
© Andrew Scott 2006 - 2024,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/