#pragma once #ifdef __cplusplus extern "C" { #define FURI_NORETURN [[noreturn]] #else #include #define FURI_NORETURN noreturn #endif /** Check condition and crash if check failed */ #define furi_check(__e) ((__e) ? (void)0 : furi_crash("furi_check failed\r\n")) /** Only in debug build: Assert condition and crash if assert failed */ #ifdef FURI_DEBUG #define furi_assert(__e) ((__e) ? (void)0 : furi_crash("furi_assert failed\r\n")) #else #define furi_assert(__e) \ do { \ ((void)(__e)); \ } while(0) #endif /** Crash system */ FURI_NORETURN void furi_crash(const char* message); /** Halt system */ FURI_NORETURN void furi_halt(const char* message); #ifdef __cplusplus } #endif