Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
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
10
#pragma once
11
24
#include <stdint.h>
25
26
#ifdef __cplusplus
27
extern
"C"
{
28
#endif
29
30
#ifdef DOXYGEN
47
#define DEBUG_ASSERT_VERBOSE
48
61
#define DEBUG_ASSERT_BREAKPOINT
62
#else
63
/* we should not include custom headers in standard headers */
64
#define _likely(x) __builtin_expect((uintptr_t)(x), 1)
65
#endif
66
76
#ifndef __NORETURN
77
#ifdef __GNUC__
78
#define __NORETURN __attribute__((noreturn))
79
#else
/*__GNUC__*/
80
#define __NORETURN
81
#endif
/*__GNUC__*/
82
#endif
/*__NORETURN*/
83
84
#ifdef NDEBUG
85
#define assert(ignore)((void)0)
86
#elif defined(DEBUG_ASSERT_VERBOSE)
97
__NORETURN
void
_assert_failure
(
const
char
*file,
unsigned
line);
135
#define assert(cond) (_likely(cond) ? (void)0 : _assert_failure(__FILE__, __LINE__))
136
#else
/* DEBUG_ASSERT_VERBOSE */
137
__NORETURN
void
_assert_panic(
void
);
138
#define assert(cond) (_likely(cond) ? (void)0 : _assert_panic())
139
#endif
/* DEBUG_ASSERT_VERBOSE */
140
141
#if !defined __cplusplus
142
#if __STDC_VERSION__ >= 201112L
146
#define static_assert(...) _Static_assert(__VA_ARGS__)
147
#else
153
#define static_assert(cond, ...) \
154
{ enum { static_assert_failed_on_div_by_0 = 1 / (!!(cond)) }; }
155
#endif
156
#endif
157
163
#ifndef DEBUG_ASSERT_NO_PANIC
164
#define DEBUG_ASSERT_NO_PANIC (1)
165
#endif
166
167
#ifdef __cplusplus
168
}
169
#endif
170
_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:80
Generated on Tue Apr 15 2025 19:07:07 by
1.9.1