<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mehrere Übersetzungseinheiten]]></title><description><![CDATA[<p>Hallo zusammen,<br />
Ich höre immer wieder, wie viele Leute mit mehreren Übersetzungseinheiten arbeiten. Häufig wird gesagt, bei Klassen sollte man die Deklaration in eine Headerdatei und die Definition der Memberfunktionen in CPP-Dateien schreiben.</p>
<p>Bis jetzt hatte ich eigentlich meistens nur eine Übersetzungseinheit, halt dort wo <code>main()</code> steht. Den Rest binde ich immer in H-Dateien ein.</p>
<p>Was ist schlecht an meiner Vorgehensweise bzw. welche Vorteile bietet es, wenn man mehrere CPP-Dateien erstellt? Ich habe auch schon gehört, dass man dann viel mehr aufpassen muss wegen ODR und solchen Sachen... Was ist also ausschlaggebend?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216286/mehrere-übersetzungseinheiten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 12:41:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216286.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Jun 2008 20:43:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sat, 21 Jun 2008 20:43:46 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
Ich höre immer wieder, wie viele Leute mit mehreren Übersetzungseinheiten arbeiten. Häufig wird gesagt, bei Klassen sollte man die Deklaration in eine Headerdatei und die Definition der Memberfunktionen in CPP-Dateien schreiben.</p>
<p>Bis jetzt hatte ich eigentlich meistens nur eine Übersetzungseinheit, halt dort wo <code>main()</code> steht. Den Rest binde ich immer in H-Dateien ein.</p>
<p>Was ist schlecht an meiner Vorgehensweise bzw. welche Vorteile bietet es, wenn man mehrere CPP-Dateien erstellt? Ich habe auch schon gehört, dass man dann viel mehr aufpassen muss wegen ODR und solchen Sachen... Was ist also ausschlaggebend?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533415</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 21 Jun 2008 20:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sat, 21 Jun 2008 22:26:56 GMT]]></title><description><![CDATA[<p>Hi,<br />
Wenn du an größeren Projekten (~&gt;10000 Zeilen Code) arbeitest, wirst du mehrere ÜE (wenn du sie so nennen willst, besser wäre meiner Meinugn nach Module) brauchen.<br />
Vorteil davon:<br />
Wenn sich in einer Datei etwas ändert, brauchst du nur das entsprechende Modul neu kompilieren, der rest bleibt unverändert. (Google nach Vorteieln von dynamischen gegenüber statischen Libs, das ist sozusagen nur einen Level höher)<br />
Nachteil:<br />
Der Compiler kann nicht mehr über die Funktionen hinweg optimieren. Bei Hochperformance-Anwendungen darfst du also nicht functions in anderen Object-Files callen.</p>
<p>mfg, Hans</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533468</guid><dc:creator><![CDATA[Golem86]]></dc:creator><pubDate>Sat, 21 Jun 2008 22:26:56 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sun, 22 Jun 2008 11:16:15 GMT]]></title><description><![CDATA[<p>Das heisst, die Kompilierzeit ist der einzige Vorteil? Weil bei meinen Projekten dauert das eh nur 10 Sekunden, von daher ist es nicht so tragisch, wenn ich immer alles kompiliere.</p>
<p>Sonst hat es keine Nachteile, wenn ich nur eine CPP-Datei habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533592</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 22 Jun 2008 11:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sun, 22 Jun 2008 12:24:49 GMT]]></title><description><![CDATA[<p>Na ja, wenn 100 Progrmamierer an einen Projekt arbeiten, muss ja auch jede Arbeitsgruppe ein eigenes Modul haben, da sonst inkonsistente Versionen zusammenkommen können (auch mit Versionierungssoftware wie SVN).<br />
Wenn du den ganzen Linux-Kernel in ein Modul schreibst, kannst du ewig warten, bis der fertig ist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Außerdem zwingen dir machen Frameworks wie wxWidgets und besonders die RAD-GUI-Designer (fast) mehrere Module auf.</p>
<p>mfg, Hans</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533619</guid><dc:creator><![CDATA[Golem86]]></dc:creator><pubDate>Sun, 22 Jun 2008 12:24:49 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sun, 22 Jun 2008 19:23:37 GMT]]></title><description><![CDATA[<p>Okay, danke für die Erläuterungen.</p>
<p>Und was hat es jetzt mit der Trennung bei Klassen (Methodendeklarationen in Headern und -definitionen in CPP-Dateien) auf sich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533834</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 22 Jun 2008 19:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sun, 22 Jun 2008 21:53:45 GMT]]></title><description><![CDATA[<p>Du brauchst sowieso die Klassendefinition in nem Header damit deine anderen Module wissen wie die &quot;Aussehen&quot;. Um Fehler zu vermeiden und dir Arbeit zu sparen, kannst du das ganze auch gleich in einem machen, den du in allen Modulen einbindest.</p>
<p>mfg, Hans <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> :schland:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533891</guid><dc:creator><![CDATA[Golem86]]></dc:creator><pubDate>Sun, 22 Jun 2008 21:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sun, 06 Jul 2008 15:43:17 GMT]]></title><description><![CDATA[<p>Inzwischen hab ich mir die Thematik noch ein bisschen genauer angeschaut. Trotzdem habe ich den Eindruck, man erhält einige Probleme bei mehreren CPP-Dateien. Man muss immer schauen, dass Bezeichner nur einmal definiert sind, bei Klassen muss man genau auf <code>inline</code> -Methoden achten und beispielsweise Templates sind schwierig zu implementieren (das Schlüsselwort <code>export</code> wird ja nicht immer vollständig unterstützt). Kann auch sein, dass ich mich irre, korrigiert mich bitte.</p>
<p>Also lohnt es sich schlussendlich trotzdem (auch wegen der bisher genannten Argumenten wie Konsistenz und einzelne Kompilierung), den Code auf mehrere Übersetzungseinheiten zu verteilen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541942</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Jul 2008 15:43:17 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Übersetzungseinheiten on Sun, 06 Jul 2008 17:42:03 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Also lohnt es sich schlussendlich trotzdem (auch wegen der bisher genannten Argumenten wie Konsistenz und einzelne Kompilierung), den Code auf mehrere Übersetzungseinheiten zu verteilen?</p>
</blockquote>
<p>Ich würde es dringend empfehlen. Bei grösseren Projekten fördert sowas extrem die Übersicht und besser du fängst jetzt damit an, als das du dich später umgewöhnen musst.</p>
<p>Ein so grosses Problem ist es im übrigen nicht. Wenn man es regelmässig anwendet, passiert alles voll automatisch. Ich habe seit Ewigkeiten keine Probleme mehr gehabt mit Mehrfachdefinitionen oder sonstigem. Der Gewinn den ich davon habe ist aber extrem! Ich würde meinen Quellcode nicht mehr verstehen, wenn da nur ein .cpp File wäre.</p>
<p>Die templates kann man im übrigen vollständig im Header belassen oder du kannst sie in ein cpp auslagern und dann im Header includen. Also alles ohne export oder sowas.</p>
<p>Was dein Problem mit inline Klassenfunktionen ist, verstehe ich nicht ganz. Inlineklassenfunktionen kann man ruhig im Header, bzw. der Klassendeklaration, belassen, so werden sie auch automatisch zu inline funktionen, ohne das Schlüsselwort zu verwenden. Und man erkennt auch schnell, ob es nicht sinnvoller wäre, die inline Funktion in eine normale zu verwandeln, weil sie zu dick im Header ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542013</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 06 Jul 2008 17:42:03 GMT</pubDate></item></channel></rss>