<?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[kleine Code Erklärung und n paar kleine Fragen....]]></title><description><![CDATA[<p>hi kann mir einer den folgenden Code erlären...was soll das ??....(ist auß der Datei globals.h aus der id3lib Bibiothk) ....versteh nicht was die defines bezwcken sollen:</p>
<pre><code class="language-cpp">#ifdef __cplusplus
#  define ID3_ENUM(E)   enum   E
#  define ID3_STRUCT(S) struct S
#else
#  define ID3_ENUM(E)   typedef enum   _ ## E E; enum   _ ## E
#  define ID3_STRUCT(S) typedef struct _ ## S S; struct _ ## S
#endif
</code></pre>
<p>dann hab ich noch n paar Fragen:</p>
<p>-Warum soll man ner #define-Konstante lieber ein const typ vorziehen (bzw generell kein Präprozesser #Direktiven benutzen?) ?<br />
-Bringt ein typedef bspw vor einem struct einen 'Geschwindigkeitszuwachs' oder sonst irgend welche Vorteile^^ ?<br />
-Macht es einen Unterschied wenn ich UINT (Definition: #define unsigned int UINT) oder unsigned int direkt benutze (als Beispiel) ?<br />
-Was ist besser: Makros oder Funktionen (und warum!)?<br />
-Gibt es in C, inline Funktionen ?</p>
<p>DANKE!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149607/kleine-code-erklärung-und-n-paar-kleine-fragen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 07:40:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149607.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jun 2006 17:27:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kleine Code Erklärung und n paar kleine Fragen.... on Wed, 07 Jun 2006 17:27:42 GMT]]></title><description><![CDATA[<p>hi kann mir einer den folgenden Code erlären...was soll das ??....(ist auß der Datei globals.h aus der id3lib Bibiothk) ....versteh nicht was die defines bezwcken sollen:</p>
<pre><code class="language-cpp">#ifdef __cplusplus
#  define ID3_ENUM(E)   enum   E
#  define ID3_STRUCT(S) struct S
#else
#  define ID3_ENUM(E)   typedef enum   _ ## E E; enum   _ ## E
#  define ID3_STRUCT(S) typedef struct _ ## S S; struct _ ## S
#endif
</code></pre>
<p>dann hab ich noch n paar Fragen:</p>
<p>-Warum soll man ner #define-Konstante lieber ein const typ vorziehen (bzw generell kein Präprozesser #Direktiven benutzen?) ?<br />
-Bringt ein typedef bspw vor einem struct einen 'Geschwindigkeitszuwachs' oder sonst irgend welche Vorteile^^ ?<br />
-Macht es einen Unterschied wenn ich UINT (Definition: #define unsigned int UINT) oder unsigned int direkt benutze (als Beispiel) ?<br />
-Was ist besser: Makros oder Funktionen (und warum!)?<br />
-Gibt es in C, inline Funktionen ?</p>
<p>DANKE!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073335</guid><dc:creator><![CDATA[TempVariable]]></dc:creator><pubDate>Wed, 07 Jun 2006 17:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Code Erklärung und n paar kleine Fragen.... on Wed, 07 Jun 2006 17:59:08 GMT]]></title><description><![CDATA[<p>Die Codeunterscheidung für C++ und C wird deshalb benutzt, weil in C struct- und enum-Namen keine Typen sind. In C muss man immer struct Structname schreiben, während in C++ meistens Structname reicht. (Ich bin mir dabei nicht ganz sicher, der C Teil sieht doch sehr suspekt aus. Und da siehst du schon, warum Makros böse sind ;)).</p>
<blockquote>
<p>Warum soll man ner #define-Konstante lieber ein const typ vorziehen (bzw generell kein Präprozesser #Direktiven benutzen?) ?</p>
</blockquote>
<p>Den Präprozessor benutzt man nicht, weil er schlichtweg strunzdumm ist. Er beherrscht nur einfache Textersetzung und einige Abfragen, mehr nicht. Bis auf Umgebungskonstanten und Include-Guards braucht man ihn auch kaum (höchstens noch um gewagte Metaprogrammierungskonstrukte etwas abzukürzen, das ist aber auch heikel).</p>
<blockquote>
<p>Bringt ein typedef bspw vor einem struct einen 'Geschwindigkeitszuwachs' oder sonst irgend welche Vorteile^^ ?</p>
</blockquote>
<p>s.o., Geschwindigkeitszuwachs gibt es mit Sicherheit nicht, da die Typen eh zur Laufzeit weg sind.</p>
<blockquote>
<p>Macht es einen Unterschied wenn ich UINT (Definition: #define unsigned int UINT) oder unsigned int direkt benutze (als Beispiel) ?</p>
</blockquote>
<p>Da hast du direkt einen feinen Fehler am Hals (zumindest, wenn du es so schreibst):</p>
<pre><code class="language-cpp">#define UINT unsigned int;
// ...

int i = -10;

std::cout &lt;&lt; UINT (i) &lt;&lt; std::endl;
</code></pre>
<p>Das gibt einen Compilerfehler, weil UINT eben zu unsigned int und nicht zu (unsigned int) aufgelöst wird.</p>
<blockquote>
<p>Was ist besser: Makros oder Funktionen (und warum!)?</p>
</blockquote>
<p>Funktionen, weil sie Typprüfung haben. C++ ist schließlich statisch und streng typisiert.</p>
<blockquote>
<p>Gibt es in C, inline Funktionen ?</p>
</blockquote>
<p>AFAIK ab C99.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073357</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 07 Jun 2006 17:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Code Erklärung und n paar kleine Fragen.... on Wed, 07 Jun 2006 18:01:42 GMT]]></title><description><![CDATA[<p>TempVariable schrieb:</p>
<blockquote>
<p>hi kann mir einer den folgenden Code erlären...was soll das ??....(ist auß der Datei globals.h aus der id3lib Bibiothk) ....versteh nicht was die defines bezwcken sollen:</p>
<pre><code class="language-cpp">#ifdef __cplusplus
#  define ID3_ENUM(E)   enum   E
#  define ID3_STRUCT(S) struct S
#else
#  define ID3_ENUM(E)   typedef enum   _ ## E E; enum   _ ## E
#  define ID3_STRUCT(S) typedef struct _ ## S S; struct _ ## S
#endif
</code></pre>
</blockquote>
<p>In C muss man explizit angeben wenn ein Typ ein enum oder struct ist, aber das kann man mit einem typedef &quot;umgehen&quot;.</p>
<p>dann hab ich noch n paar Fragen:</p>
<p>TempVariable schrieb:</p>
<blockquote>
<p>-Warum soll man ner #define-Konstante lieber ein const typ vorziehen (bzw generell kein Präprozesser #Direktiven benutzen?) ?</p>
</blockquote>
<p>Der Präprozessor ist fast nur ein Textersetzer, dadurch entstehen oft Fehler im Code.</p>
<p>TempVariable schrieb:</p>
<blockquote>
<p>-Bringt ein typedef bspw vor einem struct einen 'Geschwindigkeitszuwachs' oder sonst irgend welche Vorteile^^ ?</p>
</blockquote>
<p>Nö, nur wie gesagt in C spart man sich dadurch das Keyword bei jeder Deklaration</p>
<p>TempVariable schrieb:</p>
<blockquote>
<p>-Macht es einen Unterschied wenn ich UINT (Definition: #define unsigned int UINT) oder unsigned int direkt benutze (als Beispiel) ?</p>
</blockquote>
<p>Siehe oben: Wird einfach im Quellcode erstetzt bevor kompiliert wird.</p>
<p>TempVariable schrieb:</p>
<blockquote>
<p>-Was ist besser: Makros oder Funktionen (und warum!)?</p>
</blockquote>
<p>Funktionen</p>
<p>TempVariable schrieb:</p>
<blockquote>
<p>-Gibt es in C, inline Funktionen ?</p>
</blockquote>
<p>Glaube ja, ist aber jeweils nur eine Empfehlung an den Compiler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1073360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1073360</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Wed, 07 Jun 2006 18:01:42 GMT</pubDate></item></channel></rss>