<?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[Frage zu Inlinefunktionen]]></title><description><![CDATA[<p>Hallo,<br />
nehmen wir an, ich habe folgende zwei inline funktionen</p>
<pre><code class="language-cpp">inline int function1 (const int  a, const int  b) { return a+b; }
inline int funktion2 (const int &amp;a, const int &amp;b) { return a+b; }
</code></pre>
<p>Wie wird das dann in einem solchen Gefüge übersetzt?</p>
<pre><code class="language-cpp">int a,b;
cout&lt;&lt;functionX(a, b);
</code></pre>
<p>Werden in Funktion 1 die beiden int Werte in temporäre ints kopiert und dann ausgewertet? Und werden in Funktion 2 immer noch Referenzen von a und b übergeben und mit den Referenzen agiert oder werden die Objekte direkt verwendet?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240369/frage-zu-inlinefunktionen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 00:57:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240369.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 May 2009 21:42:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Tue, 05 May 2009 21:42:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
nehmen wir an, ich habe folgende zwei inline funktionen</p>
<pre><code class="language-cpp">inline int function1 (const int  a, const int  b) { return a+b; }
inline int funktion2 (const int &amp;a, const int &amp;b) { return a+b; }
</code></pre>
<p>Wie wird das dann in einem solchen Gefüge übersetzt?</p>
<pre><code class="language-cpp">int a,b;
cout&lt;&lt;functionX(a, b);
</code></pre>
<p>Werden in Funktion 1 die beiden int Werte in temporäre ints kopiert und dann ausgewertet? Und werden in Funktion 2 immer noch Referenzen von a und b übergeben und mit den Referenzen agiert oder werden die Objekte direkt verwendet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706151</guid><dc:creator><![CDATA[inliner]]></dc:creator><pubDate>Tue, 05 May 2009 21:42:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 07:19:32 GMT]]></title><description><![CDATA[<p>Ich würde da an Deiner Stelle mal einen Blick in den Assembler-Code werfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706218</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 06 May 2009 07:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 13:36:53 GMT]]></title><description><![CDATA[<p>Ich würde mal behaupten wollen, dass es keinen Unterschied der beiden Funktionen gibt, wenn sie wirklich ge-inlined werden...<br />
wenn sie nicht mehr ge-inlined werden, dann sollte der unterschied ja auf der hand liegen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706486</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 06 May 2009 13:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 13:46:11 GMT]]></title><description><![CDATA[<p>Aber was ist mit einer solchen Funktion</p>
<pre><code class="language-cpp">inline void funktion1 ( int  a ) { ++a; }
inline void funkiton2 ( int&amp; a ) { ++a; }
</code></pre>
<p>Im erste Fall muss der Compiler ja eine temporäre Variable anlegen, da ja nur die Kopie von a verändert wird. Im zweiten Fall wird a über die Referenz geändert. Wird der Compiler dann im 2. Fall einfach a einfügen oder auch mit der Referenz arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706495</guid><dc:creator><![CDATA[inliner]]></dc:creator><pubDate>Wed, 06 May 2009 13:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 13:52:17 GMT]]></title><description><![CDATA[<p>Eine inline expandierte Funktion verhält sich in allen Belangen wie eine normale Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706499</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 06 May 2009 13:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 14:01:30 GMT]]></title><description><![CDATA[<p>na toll...<br />
und als nächstes fragst du wohl, was der compilier hier macht:</p>
<pre><code class="language-cpp">inline void () {}
</code></pre>
<p>richtig... das gleiche, wie bei der fkt., wo der parameter per value übergeben wird - er optimiert sie weg...<br />
beim zweiten steht dann iwann ma nen ++x im quellcode, japp...</p>
<p>bb</p>
<p>ps: und trotzdem könntest du dir den erzeugten (asm-)code aus dem eingangspost ma angucken - er ist gleich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706506</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 06 May 2009 14:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 14:02:54 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Eine inline expandierte Funktion verhält sich in allen Belangen wie eine normale Funktion.</p>
</blockquote>
<p>Wobei das Schlüsselwort <code>inline</code> keine Garantie abgibt, dass die Funktion auch inline expandiert wird.</p>
<p>@inliner,<br />
Sowas ist völlig vom Kompiler abhängig, da ist es schwer etwas auszusagen. Kann sein dass alles völlig wegoptimiert wird und am Ende gar nicht mehr vorhanden ist.<br />
Gerade bei deinem zweiten Beispiel könnte es gut sein, dass die erste Methode ganz verschwindet. Und die zweite Methode einfach wegfällt und die Variable direkt inkrementiert wird. Aber das hängt wie gesagt, ganz vom Kompiler und seinen Optimierungen ab.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706509</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 May 2009 14:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 14:06:45 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Gerade bei deinem zweiten Beispiel könnte es gut sein, dass die erste Methode ganz verschwindet. Und die zweite Methode einfach wegfällt und die Variable direkt inkrementiert wird. Aber das hängt wie gesagt, ganz vom Kompiler und seinen Optimierungen ab.</p>
</blockquote>
<p>Es hängt zwar vom Compiler ab, aber meinst du wirklich, dass es noch Compiler gibt, die nicht fähig sind, so zu optimieren? Oo</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706513</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 06 May 2009 14:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Inlinefunktionen on Wed, 06 May 2009 14:12:20 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Es hängt zwar vom Compiler ab, aber meinst du wirklich, dass es noch Compiler gibt, die nicht fähig sind, so zu optimieren? Oo</p>
</blockquote>
<p>1. Weisst du eigentlich, wieviele Kompiler es gibt? Für irgendwelche seltsamen Platformen?<br />
2. Weisst du eigentlich, wieviele von diesen Dinger völliger Scheiss sind? <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>Ich hatte erst gerade vor einem halben Jahr mit so einem blöden und seltsamen C (bzw. ein Dialekt von C) Kompiler zu tun.</p>
<p>3. Die Frage ist aber auch, wie optimiert wird. Das hängt noch vom ganzen Rest ab. Kann sein dass da viel mehr optimiert wird, als nur diese Funktion. Und wie dies dann optimiert wird, da kann man nur raten. Es geht also nicht darum, dass er das nicht schafft, sondern das er noch viel besser ist als das <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/1706521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706521</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 06 May 2009 14:12:20 GMT</pubDate></item></channel></rss>