Artikel zu C und C++

Eine Reihe von Artikeln, die sich mit verschiedenen praxisorientierten Aspekten der Programmiersprachen C und C++ befassen. Ursprnglich wurden sie fr das (nicht mehr existierende) C/C++ Portal von meOme verfasst.

Sprache

Polymorphie und heterogene Container
Die Speicherung von Objekten mit unterschiedlichem Typ in einem einzigen Container ist nicht trivial. Der Artikel zeigt die richtige Vorgehensweise.

Performancetuning
Wenn die Programmausfhrung qulend langsam vonstatten geht, dann ist ein Tuning der Performance ntig. Wir zeigen, wie dies mittels einfacher C++ Bordmittel mglich ist.

Namespaces
Die aktive Verwendung von Namespaces erlaubt die bessere Strukturierung groer Softwareprojekte.

Reference Counting
Reference Counting verbindet den Vorteil der automatischen Freigabe von Objektressourcen mit der beliebigen Kopierbarkeit des Objektes.

Templates (1)
Templates (deutsch: Schablonen) sind ein mchtiges Instrument zur effektiven Kodierung von Algorithmen in C++. Insbesondere die Wiederverwendbarkeit des Kodes wird drastisch verbessert.

Templates (2)
Anhand eines Algorithmus zur Speicherung von beliebigen Objekten in einem Stack wird die Erstellung von Klassentemplates erklrt.

Parameterbergabe an Funktionen
Parameter lassen sich in C++ an Funktionen per value, per pointer oder per reference bergeben. Nach welchen Kriterien soll der Programmierer nun die richtige Auswahl treffen?

Konstanten
Die Deklaration konstanter Objekte, Parameter und Memberfunktionen ist eine wichtige Komponente der strukturierten Programmierung und hilft bei der Vermeidung von Fehlern.

Die 12 hufigsten Programmierfehler
Immer wieder werden die gleichen Fehler gemacht... Diese Liste enthlt die zwlf am hufigsten vorkommenden Fehler in der C-Programmierung und soll dabei helfen, selbige zu vermeiden.

Exceptions
Die Behandlung von Fehlern und Ausnahmesituationen mittels Exceptions ist ein wichtiger Bestandteil von C++

Standard Template Library (STL)

STL Container
Container sind ein grundlegendes Element der STL. Welche gibt es und wie werden sie verwendet?

Functors - Funktionsobjekte
Functors sind universell verwendbare Funktionsobjekte. Sie erweitern das aus C bekannte Konzept der Funktionszeiger.

STL Zuflle
Wenn der Zufall bei der Programmausfhrung eine Rolle spielen soll, dann kann der STL-Algorithmus random_shuffle Anwendung finden.

Zeigerautomatik mit auto_ptr
Das Template auto_ptr aus der STL hilft bei der Vermeidung von Speicherlecks.

Streams (1)
Streams sind das universelle Mittel zur Ein- und Ausgabe von Daten in C++.

Streams (2) - Manipulatoren
Um die Ein- und Ausgabe nach eigenen Wnschen gestalten zu knnen, hat der C++ Entwickler die Mglichkeit, den Datenstrom durch Manipulatoren zu steuern.

Streams (3) - Nutzerdefinierte Manipulatoren
Zustzlich zu den Standard Stream-Manipulatoren kann der Entwickler eigene Manipulatoren definieren. Lohn der Mhe ist einfacher zu schreibender und besser zu verstehender Code.

Streams (4) - String Streams
String Streams sind ein universelles Mittel zur Konvertierung unterschiedlicher Datenformate ineinander. Vor allem lsst sich die oft bentigte Umwandlung von Strings in ihre numerischen Entsprechungen damit realisieren.

Vektoren und Listen
Die Standard Template Library (STL) enthlt ntzliche Container-Templates zur sequentiellen Speicherung von Objekten. Diese sind weitaus komfortabler einzusetzen als die aus ANSI-C bekannten (und berchtigten) Arrays.

Strings - Zeichenketten
Fr den C-Programmierer ist die Beschftigung mit Zeichenketten eine nervende und zeitraubende Ttigkeit. Fr den Nutzer der STL unter C++ wird dagegen alles gut...

Ein- und Ausgabe von Dateien
Dieser Artikel beantwortet die Fragen: Wie kann man eine Datei in einem C++ Programm einlesen? Wie wird in eine Datei geschrieben? Wie lassen sich Fehler bei diesen Operationen abfangen?

Assoziative Container in der STL
Die wichtigste Ergnzung des neuen C++ Standards ist die Standard Template Library (STL).

Multithreading

Multithreading - Einfhrung
Mit Multithreading wird die Fhigkeit eines Programms bezeichnet, mehrere Aktivittsstrnge (Threads) parallel auszufhren.

Multithreading - JThreads/C++
Die Entwicklung von multithreaded C++-Programmen unter Windows und Unix lsst sich unter Zuhilfenahme des Paketes JThreads/C++ relativ einfach bewerkstelligen.

Inter Process Communication (IPC)

Mailtransfer mit Pipes und Childs
Anhand eines C-Programmes zum Mailversand wird erklrt, wie mittels der UNIX-Systemaufrufe pipe(), fork() und exec() ein externes Programm gestartet und an dieses Daten ber eine Pipe geschickt werden knnen.

Synchronisation von Prozessen
Beim Austausch von Daten zwischen unabhngig ablaufenden Prozessen knnen seltsame Resultate aufgrund des asynchronen Zugriffs auf gemeinsam genutzte Ressourcen auftreten. Eine Synchronisation der Prozesse durch Verwendung von Sperrmechanismen wie Semaphoren schafft Abhilfe.

Memory Mapped Files
Wenn verschiedene Prozesse Daten untereinander austauschen sollen, so kann dazu auf Memory Mapped Files zurckgegriffen werden. Dies sind Dateien, die sich per Systemaufruf in den Arbeitsspeicher eines oder mehrerer Prozesse einblenden lassen.

Netzwerkprogrammierung Teil 1: Client
Das Erstellen von Netzwerkprogrammen, die per TCP/IP miteinander kommunizieren, gestaltet sich mittels C und der Socketschnittstelle relativ einfach. Es wird ein Netzwerkclient vorgestellt, der per HTTP Seiten von einem Webserver laden kann.

Netzwerkprogrammierung Teil 2: Server
Die Entwicklung von Serverprogrammen gestaltet sich prinzipiell nicht wesentlich komplizierter als die Clientprogrammierung. In diesem Artikel wird der vollstndige Quellcode eines einfachen Webservers gezeigt.

Erweiterte Netzwerkprogrammierung
Die Weiterentwicklung der in den vorangegangenen Artikeln beschriebenen Client/Server-Anwendung stellt den Programmierer vor eine Reihe von Herausforderungen. Zu deren Bewltigung greift man am besten auf bestehende Lsungen zurck, zum Beispiel auf das ADAPTIVE Communication Environment (ACE).

CORBA

CORBA
CORBA ist ein Mittel zur relativ komfortablen Realisierung verteilter Software. Dieses Tutorial beschreibt den Einstieg in die Verwendung von CORBA in C++ Programmen.

Libraries und APIs

Verzeichnisse
Die POSIX Bibliotheken stellen einfache Funktionen fr die Arbeit mit den Verzeichnissen des Dateisystems zur Verfgung.

Programm und Umgebung
Das Verhalten eines Programmes lsst sich ber seine Umgebung beeinflussen. Dieser Artikel erklrt die dafr notwendigen Werkzeuge.

C++ Nachbrenner
Die Boost C++ Libraries bieten ntzliche und hochqualitative Erweiterungen fr C++.

Zeitrechnungen
Auf welchen Wochentag fiel der 1. Februar? Wieviele Tage sind es noch bis Weihnachten? Die Standard C Library enthlt alle zur Berechnung notwendigen Routinen.

Around The World
Die Locale Funktionen dienen zur Anpassung der Standard C Library an lnderspezifische Gegebenheiten.

Was passiert am 9. September?
Am 9. September 2001 wird ein interner Zeitzhler der Unix- und Windows-Systeme erstmals zehnstellig. Kein Problem - oder kommt jetzt erst der richtige Milleniums-GAU?

Regulre Ausdrcke
Reguläre Ausdrücke sind ein mächtiges Instrument, um Texte zu durchsuchen und zu formatieren. In Programmiersprachen wie Perl sind sie daher schon fest eingebaut; der C++ Programmierer kann Bibliotheken wie Boost regex oder pcre einsetzen.

Zufallszahlen
Immer wieder bentigt der Programmierer zufllig erzeugte Zahlen, sei es um Simulationen einer sich chaotisch verhaltenden Umwelt durchzufhren oder einem Spiel eine unvorhersehbare Wendung zu geben. Dafr stellt C einen eingebauten Zufallszahlengenerator zur Verfgung.

Rechnen mit beliebiger Genauigkeit
Die Genauigkeit der in die Programmierspache C eingebauten Arithmetik ist begrenzt. Erst mit der GNU Multiple Precision Arithmetic Library wird das Rechnen mit beliebig langen Zahlen mglich.

MAC Adresse
Dieser Beitrag zeigt zwei Methoden zur Bestimmung der MAC-Adresse eines Netzwerkadapters

Compiler, Debugger, IDEs

C++ programmieren mit Eclipse CDT
Das Eclipse C/C++ Development Toolkit (CDT) kombiniert das Look and Feel von Eclipse mit der Power des GNU Compilers.

Bloodshed Dev-C++
Dev-C++ ist eine integrierte Entwicklungsumgebung auf Basis des MinGW Compilersystems. Sie unterliegt der GNU General Public License und ist ideal fr Einsteiger in die C++ Programmierung.

Der Borland C++ Compiler 5.5
Der C++ Compiler von Borland in der Version 5.5 fr Windows ist kostenlos zu haben. Wie erzeugt man nun damit aus C++ Code ein ausfhrbares Programm?

cygwin: GNU unter Windows
Die populren GNU-Tools, insbesondere C- und C++-Compiler, sind jedem Unix-Anwender bekannt. Cygwin ist die frei verfgbare Portierung dieser Tools auf Windows 95, 98 und NT.

LCC-Win32: Die freie Windows IDE
LCC-Win32 ist eine freie kostenlose C Entwicklungsumgebung fr Windows 95/98 und NT.

Speicherkontrolle
C und C++ berlassen die Verwaltung von dynamischem Speicher dem Programmierer. Macht dieser dabei Fehler, beginnt eine meist aufwendige Suchaktion. Memory-Debugger helfen dabei.

Versionsverwaltung

Versionsverwaltung
Whrend des Lebenszyklus eines Softwareprojektes ndert sich der Programmcode laufend. Tools zur Versionsverwaltung, wie RCS und CVS, helfen hier den berblick zu behalten.

Versionsverwaltung II
Das Concurrent Version System (CVS) ist das wohl am weitesten verbreitete Versionsverwaltungstool, vor allem fr Open Source Projekte.