1. Index
  2. Shell
  3. C
  4. POSIX
  5. JavaScript

Funktionen

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 *))
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