Aufgabe 1: Ein-/Ausgabe
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... | |
Detailed Description
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.
Macro Definition Documentation
#define STRINGIFY | ( | S | ) | #S |
Converts a macro parameter into a string.
- Parameters
-
S Expression to be converted
- Returns
- stringified version of S
#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.
- Parameters
-
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.
- Parameters
-
EXP The expression to be checked
Function Documentation
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.
- Note
- This function should never be called directly, but only via the macro
assert
.
- Todo:
- Implement Remainder of Method (output & CPU stopping)
- Parameters
-
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