<?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[Heftige Reaktion bei kleinem Schnitzer...]]></title><description><![CDATA[<p>Folgender Code [Ausschnitt]</p>
<pre><code class="language-cpp">// Das sind nur 2 Klassen + 1 Funktion
class Relatives {
public:
    std::string first;
    std::string second;
    std::vector &lt;std::string&gt; exc;
    std::string flag;
};
class ParseResult {
public:
    std::vector&lt;Relatives&gt; Relate;          //-r -f -e
    std::vector&lt;std::string&gt; Filter;        //-o
    std::vector&lt;std::string&gt; ListAlways;    //-a
    std::vector&lt;std::string&gt; RepairFlagged; //-m
    std::vector&lt;std::pair&lt;std::string, std::string&gt; &gt; Declarations; //-d

    ParseResult()
        :Relate(), Filter(), ListAlways(), RepairFlagged(), Declarations()
    {
    }
};

ParseResult run_comparison_script(const std::string&amp; script) {}

int main() {
    run_comparison_script(&quot;does not matter&quot;); // bye bye Programm
    return 0;
}
</code></pre>
<p>führt bei eine leerem Funktionsrumpf von &quot;run_comparison_script&quot; (sprich KEIN RETURN) zum Absturz (benimmt sich wie eine Endlosschleife)</p>
<p>Das sowas dabei passieren kann ist mir neu...<br />
(Ich habe es extra in einem neuen Projekt geprüft).</p>
<p><strong>Mit dem Debugger bleibe ich im Destruktor von std::pair kleben.</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/309807/heftige-reaktion-bei-kleinem-schnitzer</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 01:58:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/309807.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Oct 2012 22:48:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sat, 27 Oct 2012 22:49:13 GMT]]></title><description><![CDATA[<p>Folgender Code [Ausschnitt]</p>
<pre><code class="language-cpp">// Das sind nur 2 Klassen + 1 Funktion
class Relatives {
public:
    std::string first;
    std::string second;
    std::vector &lt;std::string&gt; exc;
    std::string flag;
};
class ParseResult {
public:
    std::vector&lt;Relatives&gt; Relate;          //-r -f -e
    std::vector&lt;std::string&gt; Filter;        //-o
    std::vector&lt;std::string&gt; ListAlways;    //-a
    std::vector&lt;std::string&gt; RepairFlagged; //-m
    std::vector&lt;std::pair&lt;std::string, std::string&gt; &gt; Declarations; //-d

    ParseResult()
        :Relate(), Filter(), ListAlways(), RepairFlagged(), Declarations()
    {
    }
};

ParseResult run_comparison_script(const std::string&amp; script) {}

int main() {
    run_comparison_script(&quot;does not matter&quot;); // bye bye Programm
    return 0;
}
</code></pre>
<p>führt bei eine leerem Funktionsrumpf von &quot;run_comparison_script&quot; (sprich KEIN RETURN) zum Absturz (benimmt sich wie eine Endlosschleife)</p>
<p>Das sowas dabei passieren kann ist mir neu...<br />
(Ich habe es extra in einem neuen Projekt geprüft).</p>
<p><strong>Mit dem Debugger bleibe ich im Destruktor von std::pair kleben.</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264773</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Sat, 27 Oct 2012 22:49:13 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sat, 27 Oct 2012 23:00:15 GMT]]></title><description><![CDATA[<p>Ja, so ist das. Es gibt keine kleinen Fehler <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/2264774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264774</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 27 Oct 2012 23:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 00:07:45 GMT]]></title><description><![CDATA[<p>Wo issen jetzt der Fehler genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264778</guid><dc:creator><![CDATA[suchender_]]></dc:creator><pubDate>Sun, 28 Oct 2012 00:07:45 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 00:10:30 GMT]]></title><description><![CDATA[<p>Das dürfte doch gar nicht kompilieren ohne return. WTF.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264779</guid><dc:creator><![CDATA[void return]]></dc:creator><pubDate>Sun, 28 Oct 2012 00:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 00:14:59 GMT]]></title><description><![CDATA[<p>Es wird &quot;nur&quot; gewarnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264780</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Sun, 28 Oct 2012 00:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 04:55:54 GMT]]></title><description><![CDATA[<p><a href="http://ideone.com/jfChRl" rel="nofollow">http://ideone.com/jfChRl</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264783</guid><dc:creator><![CDATA[geht doch]]></dc:creator><pubDate>Sun, 28 Oct 2012 04:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 06:53:19 GMT]]></title><description><![CDATA[<p>void return schrieb:</p>
<blockquote>
<p>Das dürfte doch gar nicht kompilieren ohne return. WTF.</p>
</blockquote>
<p>Doch. Es ist nur UB.</p>
<p>N3337 §6.6.3/2 schrieb:</p>
<blockquote>
<p>Flowing off the end of a function is equivalent to a return with no value; this results in undefined<br />
behavior in a value-returning function.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2264788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264788</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 28 Oct 2012 06:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 06:57:03 GMT]]></title><description><![CDATA[<p>Tim06TR schrieb:</p>
<blockquote>
<p>Es wird &quot;nur&quot; gewarnt.</p>
</blockquote>
<p>Jo, schließlich ist das Programm nicht ill-formed...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264789</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 28 Oct 2012 06:57:03 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 07:20:00 GMT]]></title><description><![CDATA[<p>Haben die das in C++11 immer noch nicht gefixt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264792</guid><dc:creator><![CDATA[c++ölf]]></dc:creator><pubDate>Sun, 28 Oct 2012 07:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 07:21:49 GMT]]></title><description><![CDATA[<p>c++ölf schrieb:</p>
<blockquote>
<p>Haben die das in C++11 immer noch nicht gefixt?</p>
</blockquote>
<p>Siehst du doch. Und ich glaube, das kommt auch nicht im C++14 Std...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264793</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 28 Oct 2012 07:21:49 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 07:43:19 GMT]]></title><description><![CDATA[<p>macht es denn irgendeinen sinn das das nicht zum compilerfehler führt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264795</guid><dc:creator><![CDATA[hmmmmmm]]></dc:creator><pubDate>Sun, 28 Oct 2012 07:43:19 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 08:19:23 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Wenn ich den gezeigten Quellcode in MSVC 2012 ausführe bekomme ich:</p>
<p>1 Error: error C4716: 'run_comparison_script' : must return a value<br />
1 Warning: warning C4100: 'script' : unreferenced formal parameter</p>
<p>Was verwendet ihr den für einen Compiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264801</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 28 Oct 2012 08:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 08:28:09 GMT]]></title><description><![CDATA[<p>GCC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264803</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 28 Oct 2012 08:28:09 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 08:31:22 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>GCC.</p>
</blockquote>
<p>Dann mal <code>+1</code> für MSVC <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/2264804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264804</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 28 Oct 2012 08:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 08:31:36 GMT]]></title><description><![CDATA[<p>War ja klar...Billigcompiler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264805</guid><dc:creator><![CDATA[vcfreak]]></dc:creator><pubDate>Sun, 28 Oct 2012 08:31:36 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 08:40:57 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>GCC.</p>
</blockquote>
<p>Dann mal <code>+1</code> für MSVC <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>
</blockquote>
<p>Lol. Dafür das er mit dem Standard inkompatibel ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>GCC tut nur seine Pflicht :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264806</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 28 Oct 2012 08:40:57 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 08:42:36 GMT]]></title><description><![CDATA[<p>Darf ein Compiler nur als Fehler auslegen, was tatsächlich durch den Standard untersagt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264807</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 28 Oct 2012 08:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 08:58:19 GMT]]></title><description><![CDATA[<p>Wenn ich mich nicht taeusche, darf nur einen Fehler ausgeben, was wirklich ill-formed ist. Das Programm ist ja Standard-Konform, wenn auch mit undefiniertem Verhalten, also muss es kompilieren. Warnen dagegen darf ein Compiler so viel er will.</p>
<p>In der Hinsicht hat MSVC hier wirklich einen Bug:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void foo()
{
	int i;
	i = (++i)*(--i)%60;
	std::cout &lt;&lt; i;
}

int bar()
{
	int i;
	i = (++i)*(--i)%60;
	return i;
}

int retNoValue1()
{}

int retNoValue2()
{
	foo();
}

int retNoValue3()
{
	if(bar() % 8)
	{
		return 0;
	}
}

int main()
{
	retNoValue1();
	retNoValue2();
	retNoValue3();
}
</code></pre>
<pre><code>1&gt;------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------
1&gt;Der Buildvorgang wurde am 28.10.2012 09:48:03 gestartet.
1&gt;InitializeBuildStatus:
1&gt;  Aktualisieren des Timestamps von &quot;Debug\Test.unsuccessfulbuild&quot;.
1&gt;ClCompile:
1&gt;  main.cpp
1&gt;p:\tmp\test\main.cpp(6): warning C4700: Die nicht initialisierte lokale Variable &quot;i&quot; wurde verwendet.
1&gt;p:\tmp\test\main.cpp(13): warning C4700: Die nicht initialisierte lokale Variable &quot;i&quot; wurde verwendet.
1&gt;p:\tmp\test\main.cpp(18): error C4716: 'retNoValue1': Muss einen Wert zurückgeben
1&gt;p:\tmp\test\main.cpp(23): error C4716: 'retNoValue2': Muss einen Wert zurückgeben
1&gt;p:\tmp\test\main.cpp(31): warning C4715: &quot;retNoValue3&quot;: Nicht alle Steuerelementpfade geben einen Wert zurück.
1&gt;
1&gt;Fehler beim Erstellen
1&gt;
1&gt;Verstrichene Zeit 00:00:00.79
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
</code></pre>
<p>Bei den uninitialisierten Variablen warnt er erwartungsgemaess, auch bei retNoValue3 warnt er richtig. Aber bei retNoValue1 und retNoValue2 ist der Fehler falsch, weil das trotzdem nicht ill-formed ist.<br />
Getestet auf MSVC 2010 Professional, deaktivieren der MS-Spracherweiterungen macht keinen Unterschied. VS2012 kann ich grad nicht benutzten, weil mir gestern durch einen Stromausfall eine Platte abgeraucht ist (nach nicht mal 48 h Betrieb, hatte meinen PC gerade vom aufruesten wieder :(). Koennt das mal jemand anderes testen, obs da richtig geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264810</guid><dc:creator><![CDATA[Jonas OSDever]]></dc:creator><pubDate>Sun, 28 Oct 2012 08:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:00:52 GMT]]></title><description><![CDATA[<p>Ich finde es aber ehrlich gesagt angemessen, dass er nicht kompiliert. Es gibt doch wirklich keinen Fall, wo das sinnvoll sein könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264811</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:07:03 GMT]]></title><description><![CDATA[<p>Natuerlich waere es absolut nicht sinnvoll, wuerde es kompilieren. Tatsache ist aber, dass das Programm nicht ill-formed ist, weshalb der Compiler C4716 eigentlich genauso als Warnung behandlen muesste wie C4715. Ob ich dann 'Warnungen wie Fehler behandeln' anschalte ist meine Sache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264812</guid><dc:creator><![CDATA[Jonas OSDever]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:07:03 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:10:07 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Ich finde es aber ehrlich gesagt angemessen, dass er nicht kompiliert. Es gibt doch wirklich keinen Fall, wo das sinnvoll sein könnte.</p>
</blockquote>
<pre><code class="language-cpp">int foo(int x)
{
 if (x&gt;0) return 1;
 if (x&lt;0) return 0;
}
</code></pre>
<p>Fehler? Warnung? Korrektes Programm?</p>
<pre><code class="language-cpp">void foobar()
{
 exit(0);
}

int bar()
{
 foobar();
}
</code></pre>
<p>Fehler? Warnung? Korrektes Programm?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264813</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:14:57 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int foo(int x)
{
 if (x&gt;0) return 1;
 if (x&lt;0) return 0;
}
</code></pre>
<p>Fehler? Warnung? Korrektes Programm?</p>
</blockquote>
<p>warning C4715: 'foo' : not all control paths return a value</p>
<p>SeppJ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void foobar()
{
 exit(0);
}

int bar()
{
 foobar();
}
</code></pre>
<p>Fehler? Warnung? Korrektes Programm?</p>
</blockquote>
<p>error C4716: 'bar' : must return a value</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264814</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:14:57 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:21:25 GMT]]></title><description><![CDATA[<p>SeppJ:<br />
Wenn der Compiler ermitteln kann, dass kein return erfolgt, sollte er imo einen Fehler ausgeben. Wenn er es nicht mit Sicherheit sagen kann wie in Deinem Programm, dann sollte er die Schnauze halten bzw. eben eine Warnung ausgeben.</p>
<p>Denn in ersterem Fall kann es imo keinen sinnvollen Fall geben. Funktionen, die einen Rückgabetyp haben, müssen etwas zurückgeben. Was sollte denn die Semantik einer Nicht-Rückgabe sein, wenn das Verhalten undefiniert ist?</p>
<p>Edit: Wie out zeigt macht es der MSVC auch genau so, wie ich es für sinnvoll erachte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264818</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:24:41 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int foo(int x)
{
 if (x&gt;0) return 1;
 if (x&lt;0) return 0;
}
</code></pre>
<p>Fehler? Warnung? Korrektes Programm?</p>
</blockquote>
<p>warning C4715: 'foo' : not all control paths return a value</p>
</blockquote>
<p>Ok, meinetwegen. Nervige Meldung, da ich die Funktion doch wissentlich nie mit 0 aufrufe.</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void foobar()
{
 exit(0);
}

int bar()
{
 foobar();
}
</code></pre>
<p>Fehler? Warnung? Korrektes Programm?</p>
</blockquote>
<p>error C4716: 'bar' : must return a value</p>
</blockquote>
<p>Dies ist aber ein reguläres Programm, welches nun nicht mehr compiliert. In allen erdenklichen Fällen wäre der Ablauf dieses Programms wohldefiniert.</p>
<p>Eisflamme schrieb:</p>
<blockquote>
<p>Was sollte denn die Semantik einer Nicht-Rückgabe sein, wenn das Verhalten undefiniert ist?</p>
</blockquote>
<p>Fragst du gerade nach der Semantik von undefiniertem Verhalten? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<blockquote>
<p>Wenn der Compiler ermitteln kann, dass kein return erfolgt, sollte er imo einen Fehler ausgeben. Wenn er es nicht mit Sicherheit sagen kann wie in Deinem Programm, dann sollte er die Schnauze halten bzw. eben eine Warnung ausgeben.</p>
</blockquote>
<p>Der Punkt meiner Beispielprogramme ist: Das ist praktisch unmöglich festzustellen! Bei all den Schweinereien die in C++ erlaubt sind, könnte sogar selbstveränderlicher Code vorkommen oder ein nebenläufiges Programm funkt in der Funktion irgendwie dazwischen. Das ist sicherlich der Grund, wieso der Standard so formuliert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264819</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:24:41 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:22:57 GMT]]></title><description><![CDATA[<p>Und welchen Sinn ergibt eine Funktion, die unter gar keinen Umständen etwas zurückgibt? Genau, keinen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264820</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:22:57 GMT</pubDate></item><item><title><![CDATA[Reply to Heftige Reaktion bei kleinem Schnitzer... on Sun, 28 Oct 2012 09:28:12 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Und welchen Sinn ergibt eine Funktion, die unter gar keinen Umständen etwas zurückgibt? Genau, keinen.</p>
</blockquote>
<p>Vielleicht muss sie eine bestimmte Schnittstelle erfüllen?</p>
<pre><code class="language-cpp">void needs_callback(int (*foo)())
{
 int i = foo();
}

int just_for_debugging()
{
 std::cerr &lt;&lt; &quot;Callback called! Exiting now!\n&quot;;
 exit(0);
}

int main()
{
 needs_callback(&amp;just_for_debugging);
}
</code></pre>
<p>Warnung? Fehler? Korrektes Programm?</p>
<p>Soll ich weiter machen mit den Beispielen? Es ist Sonntag und ich habe Zeit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264821</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 28 Oct 2012 09:28:12 GMT</pubDate></item></channel></rss>