O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

C im 21. Jahrhundert, 2nd Edition

Book Description

Werfen Sie Ihre Vorstellungen von C über Bord und lernen Sie eine Programmiersprache neu kennen, die ihren Wurzeln schon lange entwachsen ist. Mit C im 21. Jahrhundert werden Sie aktuelle Techniken entdecken, die in keinem anderen Buch über C zu finden sind. C ist nicht nur die Grundlage der modernen Programmiersprachen - C selbst ist eine moderne Sprache, ideal zum Schreiben effizienter Applikationen auf dem neuesten Stand der Technik. Trennen Sie sich von alten Angewohnheiten, die auf Mainframes sinnvoll waren, und entdecken Sie in diesem Buch die Tools, die Sie zur Arbeit mit dieser ausgereiften und überzeugend einfachen Sprache benötigen. Egal, in welcher Programmiersprache Sie gerade unterwegs sind, Sie werden merken: C rockt! Zweite, vollständig überarbeitete Auflage.

Table of Contents

  1. Vorwort
    1. C ist Punkrock
    2. Fragen & Antworten (oder: Die Rahmenbedingungen für dieses Buch)
    3. Standards: So viel Auswahl
      1. Der POSIX-Standard
    4. Ein bisschen Logistik
      1. In diesem Buch genutzte Konventionen
      2. Verwendung der Codebeispiele
      3. Kontakt
      4. Danksagungen
  2. I. Die Umgebung
    1. 1. Richten Sie sich Ihre Umgebung ein
      1. Einen Paketmanager einsetzen
      2. C unter Windows kompilieren
        1. POSIX für Windows
        2. C mit POSIX kompilieren
        3. C ohne POSIX kompilieren
      3. Wo bitte geht es zur Bibliothek?
        1. Ein paar meiner Lieblings-Flags
        2. Pfade
        3. Runtime-Linking
      4. Makefiles verwenden
        1. Variablen setzen
        2. Die Regeln
      5. Bibliotheken über ihren Quellcode nutzen
      6. Bibliothek über ihren Quellcode nutzen – auch wenn Ihr Sysadmin das nicht will
      7. C-Programme über Here-Dokumente kompilieren
        1. Header-Dateien an der Befehlszeile einbinden
        2. Der vereinheitlichte Header
        3. Here-Dokumente
        4. Von Stdin kompilieren
    2. 2. Debuggen, Testen, Dokumentieren
      1. Einen Debugger verwenden
        1. GDB-Variablen
        2. Geben Sie Ihre Strukturen aus
      2. Mit Valgrind auf Fehler prüfen
      3. Unit-Tests
        1. Ein Programm als Bibliothek verwenden
        2. Abdeckung
      4. Dokumentation einweben
        1. Doxygen
          1. Die Geschichte
        2. Literaler Code mit CWEB
      5. Fehlerprüfung
        1. Wie ist der Anwender in den Fehler involviert?
        2. Der Kontext, in dem der Anwender arbeitet
        3. Wie sollte ein Hinweis auf einen Fehler zurückgegeben werden?
    3. 3. Verpacken Sie Ihr Projekt
      1. Die Shell
        1. Shell-Befehle durch ihre Ausgabe ersetzen
        2. Die Shell für Schleifen nutzen, um auf einem Satz Dateien zu arbeiten
        3. Dateien prüfen
        4. fc
      2. Makefiles vs. Shell-Skripten
      3. Packen Sie Ihren Code mit den Autotools
        1. Ein Autotools-Beispiel
        2. Das Makefile durch Makefile.am beschreiben
          1. Formvariablen
          2. Inhaltsvariablen
          3. Tests hinzufügen
          4. Makefile-Elemente hinzufügen
        3. Das configure-Skript
          1. Weitere Shell-Elemente
    4. 4. Versionsverwaltung
      1. Änderungen per diff
      2. Git-Objekte
        1. Der Stash
      3. Bäume und ihre Zweige
        1. Merging
        2. Der Rebase
      4. Remote-Repositories
    5. 5. Mit anderen zusammenspielen
      1. Das Vorgehen
        1. Schreiben, damit es von anderen Sprachen gelesen werden kann
        2. Die Wrapper-Funktion
        3. Datenstrukturen über die Grenze schmuggeln
        4. Linken
      2. Python als Host
        1. Kompilieren und linken
        2. Das bedingte Unterverzeichnis für Automake
        3. Distutils mit Unterstützung durch die Autotools
  3. II. Die Sprache
    1. 6. Ihr Weg zum Zeiger
      1. Automatischer, statischer und manueller Speicher
      2. Persistente Statusvariablen
      3. Zeiger ohne malloc
        1. Strukturen werden kopiert, Arrays werden als Alias weitergegeben
        2. malloc und Speichertricks
        3. Das Schicksal liegt in den Sternen
        4. All die Zeigerarithmetik, die Sie kennen müssen
          1. Typedef als lehrreiches Tool
    2. 7. C-Syntax, die Sie ignorieren können
      1. Kümmern Sie sich nicht darum, explizit aus main zurückzukehren
      2. Lassen Sie Deklarationen fließen
        1. Die Array-Größe zur Laufzeit setzen
      3. Weniger Casting
      4. Enums und Strings
      5. Labels, goto, switch und break
        1. Durchdachtes goto
        2. switch
      6. Veraltetes Float
      7. Vorzeichenlose Integerwerte vergleichen
    3. 8. Hindernisse und Gelegenheiten
      1. Robuste und ansprechende Makros schreiben
        1. Präprozessortricks
      2. Mit static und extern verlinken
        1. Extern verlinkte Variablen in Header-Dateien
      3. Das Schlüsselwort const
        1. Nomen-Adjektiv-Form
        2. Spannungen
        3. Tiefe
        4. Das Problem mit char const **
    4. 9. Text
      1. Den Umgang mit Strings mithilfe von asprintf einfacher gestalten
        1. Sicherheit
        2. Konstante Strings
        3. Strings mit asprintf erweitern
      2. Ein Loblied auf strtok
      3. Unicode
        1. Das Kodieren für C-Code
        2. Unicode-Bibliotheken
        3. Der Beispielcode
    5. 10. Bessere Strukturen
      1. Compound-Literale
        1. Initialisierung per Compound-Literal
      2. Variadische Makros
      3. Listen sicher abschließen
      4. Mehrfache Listen
      5. foreach
      6. Eine Funktion vektorisieren
      7. Designated Initializers
      8. Arrays und Structs mit Nullen initialisieren
      9. Typedefs retten Ihnen den Tag
        1. Über Stil
      10. Mehrere Elemente aus einer Funktion zurückgeben
        1. Fehler melden
      11. Flexible Eingabewerte für Funktionen
        1. Deklarieren Sie Ihre Funktion im printf-Stil
        2. Optionale und benannte Argumente
        3. Eine alte Funktion aufpolieren
      12. Der void-Zeiger und die Strukturen, auf die er zeigt
        1. Funktionen mit generischen Eingabewerten
        2. Generische Strukturen
    6. 11. Objektorientierte Programmierung in C
      1. Was Sie nicht bekommen (und warum Sie es nicht vermissen werden)
        1. Gültigkeitsbereich
          1. Private Struct-Elemente
        2. Überladen mit Operator-Überladung
          1. _Generic
      2. Strukturen und Dictionaries erweitern
        1. Eine Struktur erweitern
          1. C mit weniger Rissen
        2. Ein Dictionary implementieren
        3. Lassen Sie Ihren Code auf Zeigern auf Objekte basieren
      3. Funktionen in Ihren Structs
      4. Referenzen zählen
        1. Beispiel: Ein Substring-Objekt
        2. Ein agentenbasiertes Modell der Gruppenbildung
    7. 12. Bibliotheken
      1. GLib
      2. POSIX
        1. Mit mmap riesige Datensätze verarbeiten
        2. Einfaches Threading mit Pthreads
          1. Die pthreads-Checkliste
          2. Ressourcen in Threads mit Mutexen schützen
          3. Das Beispiel
          4. _Thread_local und statische Variablen
      3. Die GNU Scientific Library
      4. SQLite
        1. Die Abfragen
      5. libxml und cURL
  4. Epilog
  5. Glossar
  6. Bibliografie
  7. Stichwortverzeichnis
  8. Über den Autor
  9. Stichwortverzeichnis
  10. Über den Übersetzer
  11. Stichwortverzeichnis
  12. Kolophon
  13. Copyright