Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
Loading...
Searching...
No Matches
assert.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2015 INRIA
3
* Copyright (C) 2016 Freie Universität Berlin
4
*
5
* This file is subject to the terms and conditions of the GNU Lesser
6
* General Public License v2.1. See the file LICENSE in the top level
7
* directory for more details.
8
*/
9
22
#ifndef ASSERT_H
23
#define ASSERT_H
24
25
#include <stdint.h>
26
27
#ifdef __cplusplus
28
extern
"C"
{
29
#endif
30
31
#ifdef DOXYGEN
48
#define DEBUG_ASSERT_VERBOSE
49
62
#define DEBUG_ASSERT_BREAKPOINT
63
#else
64
/* we should not include custom headers in standard headers */
65
#define _likely(x) __builtin_expect((uintptr_t)(x), 1)
66
#endif
67
77
#ifndef __NORETURN
78
#ifdef __GNUC__
79
#define __NORETURN __attribute__((noreturn))
80
#else
/*__GNUC__*/
81
#define __NORETURN
82
#endif
/*__GNUC__*/
83
#endif
/*__NORETURN*/
84
85
#ifdef NDEBUG
86
#define assert(ignore)((void)0)
87
#elif defined(DEBUG_ASSERT_VERBOSE)
98
__NORETURN
void
_assert_failure
(
const
char
*file,
unsigned
line);
136
#define assert(cond) (_likely(cond) ? (void)0 : _assert_failure(__FILE__, __LINE__))
137
#else
/* DEBUG_ASSERT_VERBOSE */
138
__NORETURN
void
_assert_panic(
void
);
139
#define assert(cond) (_likely(cond) ? (void)0 : _assert_panic())
140
#endif
/* DEBUG_ASSERT_VERBOSE */
141
142
#if !defined __cplusplus
143
#if __STDC_VERSION__ >= 201112L
147
#define static_assert(...) _Static_assert(__VA_ARGS__)
148
#else
154
#define static_assert(cond, ...) \
155
{ enum { static_assert_failed_on_div_by_0 = 1 / (!!(cond)) }; }
156
#endif
157
#endif
158
164
#ifndef DEBUG_ASSERT_NO_PANIC
165
#define DEBUG_ASSERT_NO_PANIC (1)
166
#endif
167
168
#ifdef __cplusplus
169
}
170
#endif
171
172
#endif
/* ASSERT_H */
_assert_failure
__NORETURN void _assert_failure(const char *file, unsigned line)
Function to handle failed assertion.
__NORETURN
#define __NORETURN
hidden (__) NORETURN definition
Definition
assert.h:81
Generated on Mon Dec 23 2024 22:27:45 by
1.9.8