StuBS
|
Contains several macros usable for making assertions. More...
Macros | |
#define | STRINGIFY(S) #S |
Converts a macro parameter into a string. More... | |
#define | assert_size(TYPE, SIZE) static_assert(sizeof(TYPE) == (SIZE), "Wrong size for " STRINGIFY(TYPE)) |
Statically ensure (at compile time) that a data type (or variable) has the expected size. More... | |
#define | assert(EXP) |
Ensure (at execution time) an expression evaluates to true , print an error message and stop the CPU otherwise. More... | |
Functions | |
void | assertion_failed (const char *exp, const char *func, const char *file, int line) |
Handles a failed assertion. More... | |
Contains several macros usable for making assertions.
Depending on the type of assertion (either static or at runtime), a failing assertion will trigger an error. For static assertion, this error will be shown at compile time and abort compilation. Runtime assertions will trigger a message containing details about the error occurred and will make the CPU die.
#define STRINGIFY | ( | S | ) | #S |
Converts a macro parameter into a string.
S | Expression to be converted |
#define assert_size | ( | TYPE, | |
SIZE | |||
) | static_assert(sizeof(TYPE) == (SIZE), "Wrong size for " STRINGIFY(TYPE)) |
Statically ensure (at compile time) that a data type (or variable) has the expected size.
TYPE | The type to be checked |
SIZE | Expected size in bytes |
#define assert | ( | EXP | ) |
Ensure (at execution time) an expression evaluates to true
, print an error message and stop the CPU otherwise.
EXP | The expression to be checked |
void assertion_failed | ( | const char * | exp, |
const char * | func, | ||
const char * | file, | ||
int | line | ||
) |
Handles a failed assertion.
This function will print a message containing further information about the failed assertion and stops the current CPU permanently.
assert
.exp | Expression that did not hold |
func | Name of the function in which the assertion failed |
file | Name of the file in which the assertion failed |
line | Line in which the assertion failed |