stdnoreturn.h
Das Schlüsselwort _Noreturn
markiert Funktionen
wie abort
und exit
, aus denen kein
Rüpcksprung stattfindet.
#define | noreturn | _Noreturn | Definition für das Schlüsselwort |
assert.h
Das assert
-Makro forciert Invarianten und
wird durch Definition von NDEBUG
deaktiviert.
Der ausgewertete Ausdruck darf keine Seiteneffekte aufweisen,
andernfalls führt dies zu einem sogenannten
Heisenbug:
Einem Fehler, der nur im Produktivsystem auftritt.
#define | assert | (expression, message) | Programmabbruch, wenn Ausdruck false ergibt |
#define | static_assert | (expression, message) | Übersetzerfehler, wenn Ausdruck false ergibt |
errno.h
Die meisten Systemaufrufe liefern im Fehlerfall -1
(oder NULL
) als Rückgabewert und speichern in der
Variable errno
einen Fehlercode.
Generische Fehlerberschreibungen dazu liefert
strerror()
.
extern thread_local int | errno | Letzte Fehlernummer | |
extern char * | program_invocation_name | Name des Programms | |
extern char * | program_invocation_short_name | Nur mit GNU Linker |
E2BIG | Argumentliste zu lang |
EACCESS | Zugriff verweigert |
EAGAIN | Ressource vorübergehend nicht verfügbar |
… | |
EWOULDBLOCK | Operation würde blockieren |
EXDEV | Improper link |
EXFULL | Exchange full |
stdlib.h
void | qsort | ( void * base, size_t nmemb, size_t size, int (* compar) (const void *, const void *)) | |
void * | bsearch | (const void * key, const void * base, size_t nmemb, size_t size, int (* compar) (const void *, const void *)) |
search.h
Globale Warteschlange | ||||
---|---|---|---|---|
void | insque | (void * elem, void * prev) | ||
void | remque | (void * elem) | ||
Globaler Baum | ||||
void * | tfind | (const void * key, const void ** root, int (* compar) (void *, void *)) | ||
void * | tsearch | (const void * key, void ** root, int (* compar) (void *, void *)) | ||
void * | tdelete | (const void * key, void ** root, int (* compar) (void *, void *)) | ||
void | twalk | (const void * root, void (* action) (const void * node, VISIT which, int depth)) | ||
void | tdestroy | ( void * root, void (* free) ( void * node)) | ||
Globale Streutabelle | ||||
typedef ENTRY | ||||
char * | key | |||
void * | data | |||
int | hcreate | (size_t nelem) | ||
ENTRY * | hsearch | (ENTRY item, ACTION action) | ||
void | hdestroy | (void) | ||
Lokale Streutabelle | ||||
struct hsearch_data | ||||
ENTRY * | table | |||
unsigned int | size | |||
unsigned int | filled | |||
int | hcreate_r | (size_t nelem, struct hsearch_data * htab) | ||
int | hsearch_r | (ENTRY item, ACTION action, | ||
ENTRY ** ret, struct hsearch_data * htab) | ||||
void | hdestroy_r | ( struct hsearch_data * htab) | ||
Lineare Suche | ||||
void * | lfind | (const void * key, const void * base, size_t * nmemb, size_t size, int (* compar) (void *, void *)) | ||
void * | lsearch | (const void * key, void * base, size_t * nmemb, size_t size, int (* compar) (void *, void *)) |
FIND | Daten suchen |
ENTER | Daten einfügen |
preorder | Tiefensuche: Wurzel, Links, Rechts |
postorder | Symmetrisch: Links, Wurzel, Rechts |
endorder | Nebenreihenfolge: Links, Rechts, Wurzel |
leaf | Einziger Besuch |
dlfcn.h
Dynamische Bibliotheken
void * | dlopen | (const char * filename, int flag) | Bibliothek öffnen |
void * | dlsym | (void * handle, const char * symbol) | Symbol laden |
char * | dlerror | (void) | Fehlerbeschreibung |
int | dlclose | (void * handle) | Bibliothek schließen |
RTLD_LAZY | Referenzen auf Funktionen erst beim Ausführen auflösen. |
RTLD_NOW | Referenzen auf Funktionen sofort auflösen. |
Zusätzlich: | |
---|---|
RTLD_GLOBAL | Symbole für nachfolgend geladene Bibliothken sichtbar machen. |
RTLD_LOCAL | Default |
GNU Erweiterungen: | |
RTLD_NODELETE | Bibliothek mit Schließen mit dlclose nicht entfernen. |
RTLD_NOLOAD | Bibliothek nicht laden, nur die Parameter verändern. |
RTLD_DEEPBIND | Symbole ganz nach vorne packen. |
setjmp.h
Nicht-lokale Sprünge
int | setjmp | (jmp_buf env) | |
void | longjmp | (jmp_buf env, int val) | |
int | _setjmp | (jmp_buf env) | Ändert im Gegensatz zu setjmp nicht die Signalmaske |
void | _longjmp | (jmp_buf env, int val) | Ändert im Gegensatz zu setjmp nicht die Signalmaske |
void | sigsetjmp | (sigjmp_buf env, int savesigs) | |
void | siglongjmp | (sigjmp_buf env, int val) |
typedef jmp_buf
typedef sigjmp_buf