next up previous contents index
Nächste Seite: 7.5.2 Beispiel: student Aufwärts: 7.5 Deklarationen und Headerfiles, Vorherige Seite: 7.5 Deklarationen und Headerfiles,   Inhalt   Index


7.5.1 Beispiel: printvec

Wir wollen die in §7.4 programmierten Funktionen PrintVec und PrintMat in einem anderen Quelltext (d.h., Hauptprogramm) benutzen. Zunächst kopieren wir die Definitionen der beiden Funktionen (und alles andere, was zum Compilieren benötigt wird) in das neue File printvec.cc. (siehe printvec.cc)

//       printvec.cc
#include <iostream.h>
void PrintVec(const int n, const double x[])
{
 ...
}
void PrintMat(const int nrow, const int ncol, const double a[])
{
 ...
}

Das File printvec.cc wird nun compiliert (ohne es zu linken!)

LINUX> g++ -c printvec.cc

wodurch das Objektfile printvec.o erzeugt wird. Das Hauptprogramm in Ex751-old.cc (siehe Ex751-old.cc) benötigt nunmehr die Deklarationen der beiden Funktionen.

//       Ex751-old.cc
//       declarations of functions from printvec.cc
void PrintVec(const int n, const double x[]);
void PrintMat(const int nrow, const int ncol, const double a[]);
main()
{
 const int N=4,M=3;                     // local constant
                                        // static matrix a
 double a[N][M] = {4,-1,-0.5, -1,4,-1, -0.5,-1,4, 3,0,-1 }, 
        u[N] = {1,2,3,-2};
 
 PrintMat(N, M, a[0]);                  // print matrix
 PrintVec(N, u);                        // print vector
}

Das Compilieren des Hauptfiles
LINUX> g++ -c Ex751-old.cc
erzeugt das Objektfile Ex751-old.o welches mit dem anderen Objektfile zum fertigen Programm a.out gelinkt werden muß
LINUX> g++ Ex751-old.o printvec.o
Sämtliches compilieren und linken läßt sich auch in einer Kommandozeile ausdrücken
LINUX> g++ Ex751-old.cc printvec.cc
wobei manche Compiler im ersten Quelltextfile (hier Ex751-old.cc) das Hauptprogramm main() erwarten.

Die Deklarationen im Hauptprogramm für die Funktionen aus printvec.cc schreiben wir in das Headerfile printvec.hh (siehe printvec.hh)

//       printvec.hh
//       declarations of functions from printvec.cc

void PrintVec(const int n, const double x[]);
void PrintMat(const int nrow, const int ncol, const double a[]);

und wir ersetzen den Deklarationsteil im Hauptprogramm durch die von Präprozessoranweisung
#include "printvec.hh"
welche den Inhalt printvec.hh vor dem Compilieren von Ex751.cc (siehe Ex751.cc) automatisch einfügt.

//       Ex751.cc
#include "printvec.hh"
main()
{
 const int N=4,M=3;                     // local constant
                                        // static matrix a
 double a[N][M] = {4,-1,-0.5, -1,4,-1, -0.5,-1,4, 3,0,-1 }, 
        u[N] = {1,2,3,-2};
 
 PrintMat(N, M, a[0]);                  // print matrix
 PrintVec(N, u);                        // print vector
}

Die Anführungszeichen " " um den Filenamen kennzeichnen, daß das Headerfile printvec.hh im gleichen Verzeichnis wie das Quelltextfile Ex751.cc zu finden ist.

Das Kommando
LINUX> g++ Ex751.cc printvec.cc
erzeugt wiederum das Programm a.out.


next up previous contents index
Nächste Seite: 7.5.2 Beispiel: student Aufwärts: 7.5 Deklarationen und Headerfiles, Vorherige Seite: 7.5 Deklarationen und Headerfiles,   Inhalt   Index
Gundolf Haase 2004-01-15