<?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[Kommentare, Kommentierung, Verständlichkeit.]]></title><description><![CDATA[<p>Ich muss fürs Studium noch eine Abschlussarbeit in C programmierung schreiben. Also Thema will ich eine Bibliothek für Binäre Suchbäume, Binäre Suchbäume die mehrfaches eintragen erlauben und AVL Bäume machen. Dabei achtet der Prof besonders auf gute kommentierung was die benutzung von diesen Bibliotheksfunktionen angeht.</p>
<p>Hab da mal einen versuch gestartet und will auch Doxygen kommentare verwenden. Wollte nur mal fragen ob die Kommentare und die beschreibung der funktionen soweit verständlich ist, was unklar wäre etc. Damit ich merke was ich besser machen könnte.</p>
<pre><code>/**
*@file BinaryTree.h
*Diese datei enthält die Definition von Funktionen zur nutzung
*eines Binärbaumes. Dieser Baum eignet sich zum speichern von jeglichen Datentyp
*da in den knoten des Baumes nur Zeiger gespeichert werden beim einfügen von doppelten 
*Elementen schlägt das einfügen fehl und liefert ein false zurück
*@author Heiko Weiß
*/

/**
*Node ist die grundlegende defintion eines Eintrages in einen
*Binärbaum
*/
typedef struct
{
    void * data; /*&lt;der Zeiger auf das Datenelement dieses Knotens*/
    node * leftChild; /*&lt;der Zeiger auf den linken Sohn dieses Knotens (NULL) wenn es keinen linken Sohn gibt*/
    node * rightChild; /*&lt;der Zeiger auf den rechten Sohn dieses Knotens (NULL) wenn es keinen rechten Sohn gibt*/
} node;

/**
*binaryTree ist der Starteintrag eines Binärbaumes und enthält das Wurzelelement
*/
typedef struct
{
    node * root; /*&lt;der Wurzeleintrag und damit startpunkt eines binärbaumes*/
} binaryTree;

/**
*erzeugt einen Binärbaum und fügt das Wurzelelement in diesen ein setzt dabei den linken 
*und rechten Sohn der Wurzel auf NULL
*@param rootdata ein Zeiger auf das Datenobjekt welches als Wurzel eingefügt werden soll
*/
binaryTree * newBinaryTree( void * rootdata );

/**
*erzeugt aus einen schon existierenden Teilbaum einen neuen Teilbaum indem es den übergebenen node als Wurzel übernimmt
*ACHTUNG es wird kein komplett neuer baum erzeugt. Sondern nur der aktuelle node als Wurzel eines neuen Teilbaumes angenommen
*dadurch werden weder neue objekte erzeugt noch objekte kopiert
*@param root der knoten der zur Wurzel des neuen Teilbaumes werden soll
*@return ein zeiger auf diesen Teilbaum
binaryTree * makeBinaryTree( node * root );

/**
*fügt in einen Binärbaum ein Element an die richtige Position ein und sorgt das die Binärbaumeigenschaft erhalten bleibt.
*@param tree Zeiger auf den Baum in den das datenelement eingefügt werden soll
*@param data Zeiger auf ein Datenelement welches eingefügt werden soll
*@param cmp vergleichsfunktion um die Elemente nach Wertigkeit vergleichen zu können diese muss vom typ int sein
*gibt sie einen Wert &gt; 0 zurück ist das linke der beiden übergebenen datenelemente von größerer Wertigkeit 
*gibt sie einen Wert = 0 zurück sind beide Elemente laut der Definition der Elemente gleich
*gibt sie einen Wert &lt; 0 zurück ist das rechte der beidenen übergebenen Datenelementen von größerer Wertigkeit
*sie benötigt als parameter zwei void zeiger welche auf die entsprechenden datenenelemente zeigen
*@return true wenn das Element erfolgreich angefuegt werden konnte, false wenn solch ein Element schon einmal vorhanden war und das einfügen daher nicht möglich war
*/
bool insert(binaryTree * tree, void * data, (int(cmp*)(void*,void*));

/**
*löscht im einen Binärbaum ein Element sorgt dabei dafür das die Binärbaumeigenschaft erhalten bleibt
*@param tree Zeiger auf den Baum in dem das Datenelement gelöscht werden soll
*@param ref ein referenz objekt um ein gleichwertiges objekt im Baum zu suchen. 
*@param cmp verlgeichsfunktion um das referenzobjekt mit den datenobjekten im baum zu vergleichen
*gibt sie einen Wert &gt; 0 zurück ist das linke der beiden übergebenen datenelemente von größerer Wertigkeit 
*gibt sie einen Wert = 0 zurück sind beide Elemente laut der Definition der Elemente gleich
*gibt sie einen Wert &lt; 0 zurück ist das rechte der beidenen übergebenen Datenelementen von größerer Wertigkeit
*sie benötigt als parameter zwei void zeiger welche auf die entsprechenden datenenelemente zeigen
*@return true wenn ein gleichwertiges objekt wie ref gefunden und dieses gelöscht wurde, andernfalls false
*/
bool delete( binaryTree * tree, void * ref, (int(cmp*)(void*,void*));

/**
*sucht in einen Binärbaum ein Element und gibt den knoten in dem enthalten ist in ret zurück
*@param tree Zeiger auf den Baum in dem ein Datenelement gesucht werden soll
*@param ref das Referenz Objekt zu dem ein gleichwertiges Objekt im Baum gesucht werden soll
*@param cmp Vergleichsfunktion um das Referenzobjekt mit den den Datenobjekten im Baum zu vergleichen
*gibt sie einen Wert &gt; 0 zurück ist das linke der beiden übergebenen datenelemente von größerer Wertigkeit 
*gibt sie einen Wert = 0 zurück sind beide Elemente laut der Definition der Elemente gleich
*gibt sie einen Wert &lt; 0 zurück ist das rechte der beidenen übergebenen Datenelementen von größerer Wertigkeit
*sie benötigt als parameter zwei void zeiger welche auf die entsprechenden datenenelemente zeigen
*@param ret ein Zeiger der nach dem ausführen der funktion auf den gefundenen Knoten verweist andernfalls auf NULL gesetzt wird falls der knoten nicht gefunden wurde
*@return true wenn ein gleichwertiges objekt wie ref im Baum gefunden wurde, andernfalls false
*/
bool find( binaryTree * tree, void * ref, (int(cmp*)(void*,void*), node * ret );

/**
*ermittelt die Tiefe des binärbaumes oder eines teilbaumes
*@param tree der Baum dessen Tiefe ermittelt werden soll
*@return die aktuelle Tiefe des Baumes
*/
int getTreeDepth(binaryTree * tree);

/**
*ermittelt die Tiefe eines Teilbaumes
*@param part der knoten der als Startknoten für diesen teilbaum gilt
*@return die aktuelle Tiefe des Teilbaumes
*/
int getNodeDepth( node * part);

/**
*gibt den übergebenen Baum in In Order notation auf den Bildschirm aus
*@param tree der Baum welcher in In order notation ausgegeben werden soll
*@param print Ausgabefunktion welches ein Datenelement auf den Bildschirm ausgeben kann. 
*/
void printInOrder( binaryTree * tree, (void(print*)(void*) );

/**
*gibt den übergebenen Baum in Pre Order notation auf den Bildschirm aus
*@param tree der Baum welcher in Pre Order notation ausgegeben werden soll
*@param print Ausgabefunktion welches ein Datenelement auf den Bildschirm ausgeben kann. 
*/
void printPreOrder( binaryTree * tree, (void(print*)(void*) );

/**
*gibt den übergebenen Baum in Post Order notation auf den Bildschirm aus
*@param tree der Baum welcher in Post order notation ausgegeben werden soll
*@param print Ausgabefunktion welches ein Datenelement auf den Bildschirm ausgeben kann. 
*/
void printInOrder( binaryTree * tree, (void(print*)(void*) );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/172792/kommentare-kommentierung-verständlichkeit</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 06:47:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172792.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Feb 2007 14:11:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 14:14:28 GMT]]></title><description><![CDATA[<p>Ich muss fürs Studium noch eine Abschlussarbeit in C programmierung schreiben. Also Thema will ich eine Bibliothek für Binäre Suchbäume, Binäre Suchbäume die mehrfaches eintragen erlauben und AVL Bäume machen. Dabei achtet der Prof besonders auf gute kommentierung was die benutzung von diesen Bibliotheksfunktionen angeht.</p>
<p>Hab da mal einen versuch gestartet und will auch Doxygen kommentare verwenden. Wollte nur mal fragen ob die Kommentare und die beschreibung der funktionen soweit verständlich ist, was unklar wäre etc. Damit ich merke was ich besser machen könnte.</p>
<pre><code>/**
*@file BinaryTree.h
*Diese datei enthält die Definition von Funktionen zur nutzung
*eines Binärbaumes. Dieser Baum eignet sich zum speichern von jeglichen Datentyp
*da in den knoten des Baumes nur Zeiger gespeichert werden beim einfügen von doppelten 
*Elementen schlägt das einfügen fehl und liefert ein false zurück
*@author Heiko Weiß
*/

/**
*Node ist die grundlegende defintion eines Eintrages in einen
*Binärbaum
*/
typedef struct
{
    void * data; /*&lt;der Zeiger auf das Datenelement dieses Knotens*/
    node * leftChild; /*&lt;der Zeiger auf den linken Sohn dieses Knotens (NULL) wenn es keinen linken Sohn gibt*/
    node * rightChild; /*&lt;der Zeiger auf den rechten Sohn dieses Knotens (NULL) wenn es keinen rechten Sohn gibt*/
} node;

/**
*binaryTree ist der Starteintrag eines Binärbaumes und enthält das Wurzelelement
*/
typedef struct
{
    node * root; /*&lt;der Wurzeleintrag und damit startpunkt eines binärbaumes*/
} binaryTree;

/**
*erzeugt einen Binärbaum und fügt das Wurzelelement in diesen ein setzt dabei den linken 
*und rechten Sohn der Wurzel auf NULL
*@param rootdata ein Zeiger auf das Datenobjekt welches als Wurzel eingefügt werden soll
*/
binaryTree * newBinaryTree( void * rootdata );

/**
*erzeugt aus einen schon existierenden Teilbaum einen neuen Teilbaum indem es den übergebenen node als Wurzel übernimmt
*ACHTUNG es wird kein komplett neuer baum erzeugt. Sondern nur der aktuelle node als Wurzel eines neuen Teilbaumes angenommen
*dadurch werden weder neue objekte erzeugt noch objekte kopiert
*@param root der knoten der zur Wurzel des neuen Teilbaumes werden soll
*@return ein zeiger auf diesen Teilbaum
binaryTree * makeBinaryTree( node * root );

/**
*fügt in einen Binärbaum ein Element an die richtige Position ein und sorgt das die Binärbaumeigenschaft erhalten bleibt.
*@param tree Zeiger auf den Baum in den das datenelement eingefügt werden soll
*@param data Zeiger auf ein Datenelement welches eingefügt werden soll
*@param cmp vergleichsfunktion um die Elemente nach Wertigkeit vergleichen zu können diese muss vom typ int sein
*gibt sie einen Wert &gt; 0 zurück ist das linke der beiden übergebenen datenelemente von größerer Wertigkeit 
*gibt sie einen Wert = 0 zurück sind beide Elemente laut der Definition der Elemente gleich
*gibt sie einen Wert &lt; 0 zurück ist das rechte der beidenen übergebenen Datenelementen von größerer Wertigkeit
*sie benötigt als parameter zwei void zeiger welche auf die entsprechenden datenenelemente zeigen
*@return true wenn das Element erfolgreich angefuegt werden konnte, false wenn solch ein Element schon einmal vorhanden war und das einfügen daher nicht möglich war
*/
bool insert(binaryTree * tree, void * data, (int(cmp*)(void*,void*));

/**
*löscht im einen Binärbaum ein Element sorgt dabei dafür das die Binärbaumeigenschaft erhalten bleibt
*@param tree Zeiger auf den Baum in dem das Datenelement gelöscht werden soll
*@param ref ein referenz objekt um ein gleichwertiges objekt im Baum zu suchen. 
*@param cmp verlgeichsfunktion um das referenzobjekt mit den datenobjekten im baum zu vergleichen
*gibt sie einen Wert &gt; 0 zurück ist das linke der beiden übergebenen datenelemente von größerer Wertigkeit 
*gibt sie einen Wert = 0 zurück sind beide Elemente laut der Definition der Elemente gleich
*gibt sie einen Wert &lt; 0 zurück ist das rechte der beidenen übergebenen Datenelementen von größerer Wertigkeit
*sie benötigt als parameter zwei void zeiger welche auf die entsprechenden datenenelemente zeigen
*@return true wenn ein gleichwertiges objekt wie ref gefunden und dieses gelöscht wurde, andernfalls false
*/
bool delete( binaryTree * tree, void * ref, (int(cmp*)(void*,void*));

/**
*sucht in einen Binärbaum ein Element und gibt den knoten in dem enthalten ist in ret zurück
*@param tree Zeiger auf den Baum in dem ein Datenelement gesucht werden soll
*@param ref das Referenz Objekt zu dem ein gleichwertiges Objekt im Baum gesucht werden soll
*@param cmp Vergleichsfunktion um das Referenzobjekt mit den den Datenobjekten im Baum zu vergleichen
*gibt sie einen Wert &gt; 0 zurück ist das linke der beiden übergebenen datenelemente von größerer Wertigkeit 
*gibt sie einen Wert = 0 zurück sind beide Elemente laut der Definition der Elemente gleich
*gibt sie einen Wert &lt; 0 zurück ist das rechte der beidenen übergebenen Datenelementen von größerer Wertigkeit
*sie benötigt als parameter zwei void zeiger welche auf die entsprechenden datenenelemente zeigen
*@param ret ein Zeiger der nach dem ausführen der funktion auf den gefundenen Knoten verweist andernfalls auf NULL gesetzt wird falls der knoten nicht gefunden wurde
*@return true wenn ein gleichwertiges objekt wie ref im Baum gefunden wurde, andernfalls false
*/
bool find( binaryTree * tree, void * ref, (int(cmp*)(void*,void*), node * ret );

/**
*ermittelt die Tiefe des binärbaumes oder eines teilbaumes
*@param tree der Baum dessen Tiefe ermittelt werden soll
*@return die aktuelle Tiefe des Baumes
*/
int getTreeDepth(binaryTree * tree);

/**
*ermittelt die Tiefe eines Teilbaumes
*@param part der knoten der als Startknoten für diesen teilbaum gilt
*@return die aktuelle Tiefe des Teilbaumes
*/
int getNodeDepth( node * part);

/**
*gibt den übergebenen Baum in In Order notation auf den Bildschirm aus
*@param tree der Baum welcher in In order notation ausgegeben werden soll
*@param print Ausgabefunktion welches ein Datenelement auf den Bildschirm ausgeben kann. 
*/
void printInOrder( binaryTree * tree, (void(print*)(void*) );

/**
*gibt den übergebenen Baum in Pre Order notation auf den Bildschirm aus
*@param tree der Baum welcher in Pre Order notation ausgegeben werden soll
*@param print Ausgabefunktion welches ein Datenelement auf den Bildschirm ausgeben kann. 
*/
void printPreOrder( binaryTree * tree, (void(print*)(void*) );

/**
*gibt den übergebenen Baum in Post Order notation auf den Bildschirm aus
*@param tree der Baum welcher in Post order notation ausgegeben werden soll
*@param print Ausgabefunktion welches ein Datenelement auf den Bildschirm ausgeben kann. 
*/
void printInOrder( binaryTree * tree, (void(print*)(void*) );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1225071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225071</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Thu, 08 Feb 2007 14:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 14:15:49 GMT]]></title><description><![CDATA[<p>Richtige Groß- und Kleinschreibung sowie kleine Abstände zu den &quot;*&quot; am Beginn wirken oft Wunder.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225072</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Thu, 08 Feb 2007 14:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 15:48:26 GMT]]></title><description><![CDATA[<p>Also mir wären des viel zu viele Kommentare.</p>
<p>z.B.</p>
<blockquote>
<p>/**<br />
<em>binaryTree ist der Starteintrag eines Binärbaumes und enthält das Wurzelelement<br />
<em>/<br />
typedef struct<br />
{<br />
node * root; /</em>&lt;der Wurzeleintrag und damit startpunkt eines binärbaumes</em>/<br />
} binaryTree;</p>
</blockquote>
<p>Der Kommentar sagt zweimal des gleiche - also unnötig. Was mich persönlich auch immer stört sind diese Hinweise auf &quot;zeiger auf ...&quot; - ich meine das das Element nen Zeiger ist seh ich am Sternchen, das brauch ich nicht nochmal <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="🙂"
    /></p>
<p>Ich bin da so ein &quot;weniger ist mehr&quot; Typ - eiß halt nur nicht ob sich das mit den Erwartungen deines Profs deckt <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="🙂"
    /> weil glaube die sollten wol doch vor persönlichen Geschmack gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225128</guid><dc:creator><![CDATA[Zwergli]]></dc:creator><pubDate>Thu, 08 Feb 2007 15:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 16:07:32 GMT]]></title><description><![CDATA[<p>Ich habe irgendwann mal 'ne ganz gute Definition gelesen:<br />
Kommentare sollen nicht sagen, was der Code macht -&gt; Das sieht man am Code selbst!<br />
Kommentare sollen erklären, warum der Code es so macht, wie er es macht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225141</guid><dc:creator><![CDATA[Reyx]]></dc:creator><pubDate>Thu, 08 Feb 2007 16:07:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 16:40:17 GMT]]></title><description><![CDATA[<p>Das sind keine Kommentare, das ist ne inline Doku.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225174</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 08 Feb 2007 16:40:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 16:59:28 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Das sind keine Kommentare, das ist ne inline Doku.</p>
</blockquote>
<p>Wo wäre dabei das Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225188</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 08 Feb 2007 16:59:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 17:17:04 GMT]]></title><description><![CDATA[<p>Reyx schrieb:</p>
<blockquote>
<p>Ich habe irgendwann mal 'ne ganz gute Definition gelesen:<br />
Kommentare sollen nicht sagen, was der Code macht -&gt; Das sieht man am Code selbst!<br />
Kommentare sollen erklären, warum der Code es so macht, wie er es macht!</p>
</blockquote>
<p>im normalfall hat man den Quellcode ja bei bibliotheken nicht mehr vorliegen sondern nur noch den header bzw die doku</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225202</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Thu, 08 Feb 2007 17:17:04 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 17:21:15 GMT]]></title><description><![CDATA[<p>Fedaykin schrieb:</p>
<blockquote>
<p>im normalfall hat man den Quellcode ja bei bibliotheken nicht mehr vorliegen sondern nur noch den header bzw die doku</p>
</blockquote>
<p>Richtig, und um die Doku geht's doch hier?</p>
<p>Ich glaube, das wurde von mir falsch verstanden:<br />
Ich meinte nicht das &quot;Kommentieren&quot; von Quellcode, sondern das Mittel &quot;Kommentar&quot; in der Sprache (//, /*, */), welche bei einer Doku auch genutzt wird. Meine Aussage war also viel allgemeiner gemeint <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1225205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225205</guid><dc:creator><![CDATA[Reyx]]></dc:creator><pubDate>Thu, 08 Feb 2007 17:21:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 19:41:48 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Das sind keine Kommentare, das ist ne inline Doku.</p>
</blockquote>
<p>Wo wäre dabei das Problem?</p>
</blockquote>
<p>Garkein Problem. Bloss weil hier so oft von &quot;Kommentaren&quot; geschrieben wird. Kommentare und Dokumentation sind halt 2 Paar Schuhe.<br />
z.B. braucht man in vielen Fällen garkeine Doku (z.B. wenn jedem der komplette Sourcecode vorliegt, und alles schön verständlich und sauber und mit bezeichnenden Namen geschrieben ist). Wenn aber schon, dann kann es leicht sein dass die Doxygen/Javadoc/... Kommentare die man zum Erstellen dieser Doku schreibt in ihrer Rohform (also wenn man den Source einfach so liest) ziemlich unübersichtlich sind, und der Code dadurch z.T. schlechter lesbar wird als ganz ohne Kommentare.</p>
<p>Deswegen sollte man das IMHO unterscheiden. Mehr wollte ich damit nicht sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225298</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 08 Feb 2007 19:41:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Thu, 08 Feb 2007 22:11:23 GMT]]></title><description><![CDATA[<p>im Quelltext selber kommentiere ich weniger.... naja weil eben durch viele kommentare dort auch die übersichtlichkeit, vor allem bei vielen Einrückungen verloren geht. Aber im Header versuche ich immer so genau wie möglich zu dokumentieren.</p>
<p>Ich hab ja schon quellcode gelesen von einen assemblerprogrammierer der das erste mal mit c gearbeitet hat. Das nenne ich unübersichtlich. Variablendeklarationen in der art p_x_zi = 0; waren dort ganz normal <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="😉"
    /> Die sollte man dann schon kommentieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225380</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Thu, 08 Feb 2007 22:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 06:58:20 GMT]]></title><description><![CDATA[<blockquote>
<p>bool insert(binaryTree * tree, void * data, (int(cmp*)(void*,void*));</p>
</blockquote>
<p>Hat C keinen typedef?</p>
<pre><code class="language-cpp">typedef (int(cmp*)(void*,void*) vergleichsFunction;
// Oder wie auch immer das in C/C++ war, sorry lange kein C/C++ mehr geschrieben.
</code></pre>
<blockquote>
<p>The use of typedef is also valuable when you want to declare things whose declaration syntax is painfully impenetrable, like ‘array of ten pointers to array of five integers’, which tends to cause panic even amongst the hardy. Hiding it in a typedef means you only have to read it once and can also help to break it up into manageable pieces:<br />
typedef int (*a10ptoa5i[10])[5];<br />
/* or */<br />
typedef int a5i[5];<br />
typedef a5i *atenptoa5i[10];</p>
<p>Try it out!</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Operatorüberladung gibt es in C wohl auch nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225432</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Fri, 09 Feb 2007 06:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 08:31:51 GMT]]></title><description><![CDATA[<p>DEvent schrieb:</p>
<blockquote>
<p>Hat C keinen typedef?</p>
</blockquote>
<p>Doch schon, aber wozu?</p>
<blockquote>
<p>Operatorüberladung gibt es in C wohl auch nicht?</p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225479</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 09 Feb 2007 08:31:51 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 10:59:34 GMT]]></title><description><![CDATA[<p>Reyx schrieb:</p>
<blockquote>
<p>Ich habe irgendwann mal 'ne ganz gute Definition gelesen:<br />
Kommentare sollen nicht sagen, was der Code macht -&gt; Das sieht man am Code selbst!<br />
Kommentare sollen erklären, warum der Code es so macht, wie er es macht!</p>
</blockquote>
<p>Finde ich sehr gut. Ich musste mal an einem Projekt weiterarbeiten, wo ständig<br />
solche Zeilen standen:</p>
<pre><code>i++;  // i wird um 1 erhöht
</code></pre>
<p>Da hat man die Hände öfters vorm Gesicht, als auf der Tastatur <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>Jockel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225595</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Fri, 09 Feb 2007 10:59:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 11:17:54 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>DEvent schrieb:</p>
<blockquote>
<p>Hat C keinen typedef?</p>
</blockquote>
<p>Doch schon, aber wozu?</p>
</blockquote>
<p>für selbstgemachte datentypen, z.b. solche, die auf structs und enums basieren unheimlich praktisch...<br />
<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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225610</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 09 Feb 2007 11:17:54 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 12:12:32 GMT]]></title><description><![CDATA[<blockquote>
<pre><code>/**
*Node ist die grundlegende defintion eines Eintrages in einen
*Binärbaum
*/
typedef struct
{
    void * data; /*&lt;der Zeiger auf das Datenelement dieses Knotens*/
    node * leftChild; /*&lt;der Zeiger auf den linken Sohn dieses Knotens (NULL) wenn es keinen linken Sohn gibt*/
    node * rightChild; /*&lt;der Zeiger auf den rechten Sohn dieses Knotens (NULL) wenn es keinen rechten Sohn gibt*/
} node
</code></pre>
</blockquote>
<p><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="😉"
    /> wäre mir selber sonst zu umständlich und ist hässlicher zu lesen wenn man immer wieder struct und sowas davor schreiben muss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225637</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Fri, 09 Feb 2007 12:12:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 12:48:28 GMT]]></title><description><![CDATA[<p>Fedaykin schrieb:</p>
<blockquote>
<blockquote>
<pre><code>/**
*Node ist die grundlegende defintion eines Eintrages in einen
*Binärbaum
*/
typedef struct
{
    void * data; /*&lt;der Zeiger auf das Datenelement dieses Knotens*/
    node * leftChild; /*&lt;der Zeiger auf den linken Sohn dieses Knotens (NULL) wenn es keinen linken Sohn gibt*/
    node * rightChild; /*&lt;der Zeiger auf den rechten Sohn dieses Knotens (NULL) wenn es keinen rechten Sohn gibt*/
} node
</code></pre>
</blockquote>
<p><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="😉"
    /> wäre mir selber sonst zu umständlich und ist hässlicher zu lesen wenn man immer wieder struct und sowas davor schreiben muss</p>
</blockquote>
<p>mach's besser so:</p>
<pre><code>typedef struct __node /* den struct namen besser nicht weglassen */
{
    void *data; 
    struct __node *leftChild;  /* typedef kann hier noch nicht verwendet werden */
    struct __node *rightChild; /* weils erst später kommt */
} node_t; /* node_t ist hier besser. an dem _t erkennt man selbstdefinierte typen */
...
node_t myNode; /* ist etwas lesbarer aus als: node myNode */
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1225660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225660</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 09 Feb 2007 12:48:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 13:11:46 GMT]]></title><description><![CDATA[<p>ten schrieb:</p>
<blockquote>
<p>Bashar schrieb:</p>
<blockquote>
<p>DEvent schrieb:</p>
<blockquote>
<p>Hat C keinen typedef?</p>
</blockquote>
<p>Doch schon, aber wozu?</p>
</blockquote>
<p>für selbstgemachte datentypen, z.b. solche, die auf structs und enums basieren unheimlich praktisch...<br />
<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="🙂"
    /></p>
</blockquote>
<p>Das mag sein, ich meinte es aber im bestehenden Kontext und nicht universell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225681</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 13:33:12 GMT]]></title><description><![CDATA[<p>ten schrieb:</p>
<blockquote>
<pre><code>typedef struct __node /* den struct namen besser nicht weglassen */
{
    void *data; 
    struct __node *leftChild;  /* typedef kann hier noch nicht verwendet werden */
    struct __node *rightChild; /* weils erst später kommt */
} node_t; /* node_t ist hier besser. an dem _t erkennt man selbstdefinierte typen */
...
node_t myNode; /* ist etwas lesbarer aus als: node myNode */
...
</code></pre>
</blockquote>
<p>Ne ne ne, das ist nicht ANSI/ISO kompatibel! Zwei Unterstriche in Bezeichnern sind dem Compiler vorbehalten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225695</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:33:12 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 13:51:21 GMT]]></title><description><![CDATA[<p>rüdiger schrieb:</p>
<blockquote>
<p>Ne ne ne, das ist nicht ANSI/ISO kompatibel! Zwei Unterstriche in Bezeichnern sind dem Compiler vorbehalten!</p>
</blockquote>
<p>stimmt, hab' ich auch schon mal gehört.<br />
na, dann nehmen wir einfach was anderes, ein grosses X oder sowas...<br />
<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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225706</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:51:21 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 13:58:35 GMT]]></title><description><![CDATA[<p>Oder node_s <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225712</guid><dc:creator><![CDATA[Brutus]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 13:59:22 GMT]]></title><description><![CDATA[<p>Fedaykin schrieb:</p>
<blockquote>
<blockquote>
<pre><code>/**
*Node ist die grundlegende defintion eines Eintrages in einen
*Binärbaum
*/
typedef struct
{
    void * data; /*&lt;der Zeiger auf das Datenelement dieses Knotens*/
    node * leftChild; /*&lt;der Zeiger auf den linken Sohn dieses Knotens (NULL) wenn es keinen linken Sohn gibt*/
    node * rightChild; /*&lt;der Zeiger auf den rechten Sohn dieses Knotens (NULL) wenn es keinen rechten Sohn gibt*/
} node
</code></pre>
</blockquote>
<p><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="😉"
    /> wäre mir selber sonst zu umständlich und ist hässlicher zu lesen wenn man immer wieder struct und sowas davor schreiben muss</p>
</blockquote>
<p>Klar wäre es so klarer als mit dem struct, aber nicht ANSI-konform (der typedef-Name existiert erst am Ende der Definition, also kannst du ihn &quot;innen&quot; nicht verwenden. In C++ kannst du den struct-Namen ohne typedef direkt verwenden ( <code>struct node{void*data;node*left;node*right;};</code> , in C benötigst du eine Forward-Deklaration dafür:</p>
<pre><code class="language-cpp">typedef struct node_ node;
struct node_
{
  void* data;
  node* left;
  node* right;
};
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14758">@ten</a> und DEvent: Ja, C hat typedef. Aber das ersetzt auch keine Dokumentation (im Gegenteil - du mußt dem Anwender erklären, was sich hinter dem definierten Begriff verbirgt und wie er ihn einsetzen darf).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225713</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:59:22 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 14:21:30 GMT]]></title><description><![CDATA[<p>Man kann auch einfach jeweils den gleichen Namen verwenden.</p>
<pre><code>typedef struct foo { ... } foo;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1225728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225728</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 09 Feb 2007 14:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 14:30:38 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Man kann auch einfach jeweils den gleichen Namen verwenden.</p>
<pre><code>typedef struct foo { ... } foo;
</code></pre>
</blockquote>
<p>kannst auch 'ne instanz anlegen die so heisst:</p>
<pre><code>typedef struct foo { int x; } foo;

int main()
{
  foo foo;  // jetzt blickt keiner mehr durch
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225736</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 09 Feb 2007 14:30:38 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 15:21:57 GMT]]></title><description><![CDATA[<p>Im anderen Fall blickt man aber auf jeden Fall durch, da man den Struct-Namen nicht ohne das Schlüsselwort 'struct' verwenden kann. Ich frage mich immer wieder, was Menschen dazu treibt, sich die wildesten Namenskonventionen für struct-Tags auszudenken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225754</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 09 Feb 2007 15:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 17:40:40 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>DEvent schrieb:</p>
<blockquote>
<p>Hat C keinen typedef?</p>
</blockquote>
<p>Doch schon, aber wozu?</p>
</blockquote>
<p>Du liest auch nicht was man postet, gelle? Dann bring mir bitte Beispiele/Argumente wieso das schlecht sein soll?</p>
<blockquote>
<p>The use of typedef is also valuable when you want to declare things whose declaration syntax is painfully impenetrable, like ‘array of ten pointers to array of five integers’, which tends to cause panic even amongst the hardy. Hiding it in a typedef means you only have to read it once and can also help to break it up into manageable pieces:<br />
typedef int (*a10ptoa5i[10])[5];<br />
/* or */<br />
typedef int a5i[5];<br />
typedef a5i *atenptoa5i[10];</p>
<p>Try it out!</p>
</blockquote>
<p>Nochmal für dich.</p>
<p>Statt</p>
<pre><code class="language-cpp">(int(cmp*)(void*,void*)
</code></pre>
<p>liest man</p>
<pre><code class="language-cpp">vergleichsFunction
</code></pre>
<p>(oder etwas ähnliches), und schon muss man sich die Kommentare nicht unbedingt durchlesen um dahinter zusteigen was gemeint ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225820</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Fri, 09 Feb 2007 17:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to Kommentare, Kommentierung, Verständlichkeit. on Fri, 09 Feb 2007 23:18:27 GMT]]></title><description><![CDATA[<p>DEvent schrieb:</p>
<blockquote>
<p>Du liest auch nicht was man postet, gelle? Dann bring mir bitte Beispiele/Argumente wieso das schlecht sein soll?</p>
</blockquote>
<p>Das Kompliment geb ich direkt zurück. Hab ich gesagt dass irgendwas schlecht ist? Ich mach doch nur Spaß. Mach von mir aus für jeden Datentyp der irgendwo ein Sternchen zuviel enthält ein typedef. Manche brauchen sowas.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226006</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 09 Feb 2007 23:18:27 GMT</pubDate></item></channel></rss>