Sonstiges

Namespaces

Ein nützliches Konzept in C++ sind die namespaces (= Namensräume). Damit lassen sich elegant Namenskonflikte vermeiden, d.h. die mehrmalige Verwendung von gleichen Namen für Variablen oder Funktionen in verschiedenen Programmbibliotheken, die im gleichen Programmbereich benutzt werden.



namespace PhysConst 
{
  const double c        = 2.99792458e8;
  const double hbar     = 6.626068e-34;
  const double e        = 1.602176462e-19;
  ...
};

namespace MathConst 
{
  const double pi       = 3.14159265358979;
  const double e        = 2.71828182845905;
  ...
};
...
// Verwendung
grad = rad * 180./MathConst::pi;
force = PhysConst::e * PhysConst::e / ( r * r )



In älteren C++ Versionen waren die Bestandteile der sog. C++-Standard–Bibliothek ( std) der voreingestellte (=default) Namespace, damit konnten direkt alle Elemente der std–Bibliothek benutzt werden, z.B. cout, cin, sin(), sqrt(), ....

Bei aktuellen C++ Versionen bzw. Compilern leider nicht mehr der Fall, der namespace muss angegeben werden ! Dazu i.W. 2 Möglichkeiten:

Puristische C++ Programmierer verwenden konsequent explizite Namespace Angabe.
Empfehlung: Für einfache Anwendungsprogramme ist using namespace std; eigentlich kein Problem. Aber man sollte es nicht bei Entwicklung von Bibliotheken bzw. Header Dateien verwenden.


Übergabe von Argumenten ans Programm

Nur für Spezialisten



#include <cstdlib>
#include <iostream>

double pow( double x, int n );

int main( int argc, char** argv )
{

  for ( int i = 0; i < argc; i++ ) {
    cout << "Argument "<< i << "  " << argv[i] << endl;
  }
}



C Präprozessor


Was der C++ Compiler macht: