Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Organisation von includes     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
skifidelity
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.08.2010
Beiträge: 7
Beitrag skifidelity Mitglied 15:32:30 02.09.2010   Titel:   Organisation von includes            Zitieren

Hallo Forum,
mal eine Frage an Leute, die bereits große C++ Projekte realisiert haben. Wie bindet Ihr Eure includes ein. Einfaches Beispiel:
Wenn ich objektorientiert mit Vererbung programmiere, werden ja die includes der Basisklasse auch an die abgeleiteten Klassen vererbt. Includes der Basisklassen sind also überflüssig. Doch auch wenn ich nur in Basisklassen includes einbinde, finde ich das unübersichtlich, dass includes über das gesamte Modul verteilt sind.

Wie macht Ihr das? Funktioniert es, wenn man im globalen Geltungsbereich (in main.h) alle benötigten Includes einbindet?

Würde mich über Tips freuen.
Danke
Martin
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 12052
Beitrag SeppJ Moderator 15:44:38 02.09.2010   Titel:              Zitieren

Includes kommen genau dort hin, wo sie gebraucht werden. Anders geht das wohl auch kaum. Und bloß keine globale Includedatei mit allen benötigten Includes, da wäre ja der ganze Sinn der Modularität hinfällig.

Ansonsten verstehe ich nicht genau was du meinst, dein Beitrag ist ein bisschen...wirr.


Zuletzt bearbeitet von SeppJ am 15:45:17 02.09.2010, insgesamt 1-mal bearbeitet
Tachyon
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.12.2003
Beiträge: 3127
Beitrag Tachyon Mitglied 15:48:39 02.09.2010   Titel:              Zitieren

Ehrlich gesagt verstehe ich kein Stück, was Du meinst.
Includes werden gar nicht vererbt. Includes sorgen für simple Textersetzung. Da, wo Du etwas einbindest, steht der komplette Text der eingebundenen Datei, und zwar an genau der Stelle, wo die Datei eigebunden wird.

Beispiel:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//a.h

class A
{
   int a;
   int b;
};

//b.h

#include
"a.h"

class B
{
};
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//a.h

class A
{
int a;
int b;
};

//b.h

#include
"a.h"

class B
{
};
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//a.h

class A
{
   int a;
   int b;
};

//b.h

#include
"a.h"

class B
{
};


Daraus wird durch den Präprozessor:
C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
class A
{
   int a;
   int b;
};

class B
{
};
C/C++ Code:
1
2
3
4
5
6
7
8
9
class A
{
int a;
int b;
};

class B
{
};
C/C++ Code:
1
2
3
4
5
6
7
8
9
class A
{
   int a;
   int b;
};

class B
{
};


Vererbung ist da erstmal nicht im Spiel und hat auch mit Includes nichts zu tun.

Damit Du aber von einer Klasse erben kannst, muss diese vollständig bekannt sein. Eine Vorwärtsdeklaration reicht nicht.

_________________
タキオン


Zuletzt bearbeitet von Tachyon am 15:50:17 02.09.2010, insgesamt 1-mal bearbeitet
drakon
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2008
Beiträge: 6809
Beitrag drakon Mitglied 15:48:57 02.09.2010   Titel:              Zitieren

Das hat nichts mit Übersichtlichkeit zu tun. Du inkludierst so wenig, wie möglich, aber so viel, wie nötig.
Abhängigkeiten kannst du verhindern, indem du dir Gedanken machst ob überall Definitionen von Klassen gebraucht werden oder ob Deklarationen reichen. Siehe dazu z.B hier.

Das heisst konkret:
Mach mal alle includes weg.
Dort, wo du lediglich den Namen einer Klasse brauchst machst du eine Vorwärtsdeklaration der Klasse.
Dort, wo du die Definition brauchst bindest du den entsprechenden Header ein.
Das sind die optimalen includes, wie sie sein sollten.

Es kann zwar sein, dass so die gleiche Headerdatei mehrmals auf einem Pfad inkludiert wird, aber dafür hast du Headerguards.

_________________
Blog: www.drakon.ch
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Organisation von includes   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.