<?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[Was tun mit Visual Studio Compiler Warnungen?]]></title><description><![CDATA[<p>Hallo allerseits!</p>
<p>Geht es nur mir so?<br />
Nach einigem Programmieren hat man beim Compilieren (insbesondere des gesamten Projektes) einen ganzen Haufen Warnungen, bei mir meistens sowas wie:</p>
<blockquote>
<p>warning C4244: '=' : conversion from 'double' to 'float', possible loss of data</p>
</blockquote>
<p>was ja z.B. schon bei Zuordnungen wie</p>
<pre><code class="language-cpp">floatwert1 = 0.5 * floatwert2;
</code></pre>
<p>passiert.<br />
Ich finde diese ganzen Warnings jedenfalls ziemlich nervig, weil darin ggf. die Errors schwerer zu finden sind.</p>
<p>Was meint Ihr, was ist dann das adäquate Vorgehen?</p>
<ol>
<li>Die Warnungen irgendwie ausschalten. (Bloß wie?)</li>
<li>static_casts verwenden, z.B.</li>
</ol>
<pre><code class="language-cpp">floatwert1 = static_cast&lt;float&gt;(0.5 * floatwert2);
</code></pre>
<ol>
<li>Sowas wie:</li>
</ol>
<pre><code class="language-cpp">floatwert1 = 0.5f * floatwert2;
</code></pre>
<p>(Bloß wie geht das bei anderen Typen und gar Variablen?)</p>
<p>Sorry, ich fand nichts passendes in den FAQ....</p>
<p>Danke und Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156969/was-tun-mit-visual-studio-compiler-warnungen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 09:52:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156969.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Aug 2006 22:02:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Mon, 21 Aug 2006 22:02:53 GMT]]></title><description><![CDATA[<p>Hallo allerseits!</p>
<p>Geht es nur mir so?<br />
Nach einigem Programmieren hat man beim Compilieren (insbesondere des gesamten Projektes) einen ganzen Haufen Warnungen, bei mir meistens sowas wie:</p>
<blockquote>
<p>warning C4244: '=' : conversion from 'double' to 'float', possible loss of data</p>
</blockquote>
<p>was ja z.B. schon bei Zuordnungen wie</p>
<pre><code class="language-cpp">floatwert1 = 0.5 * floatwert2;
</code></pre>
<p>passiert.<br />
Ich finde diese ganzen Warnings jedenfalls ziemlich nervig, weil darin ggf. die Errors schwerer zu finden sind.</p>
<p>Was meint Ihr, was ist dann das adäquate Vorgehen?</p>
<ol>
<li>Die Warnungen irgendwie ausschalten. (Bloß wie?)</li>
<li>static_casts verwenden, z.B.</li>
</ol>
<pre><code class="language-cpp">floatwert1 = static_cast&lt;float&gt;(0.5 * floatwert2);
</code></pre>
<ol>
<li>Sowas wie:</li>
</ol>
<pre><code class="language-cpp">floatwert1 = 0.5f * floatwert2;
</code></pre>
<p>(Bloß wie geht das bei anderen Typen und gar Variablen?)</p>
<p>Sorry, ich fand nichts passendes in den FAQ....</p>
<p>Danke und Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121882</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Mon, 21 Aug 2006 22:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Tue, 22 Aug 2006 06:06:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>naja ganz ausschalten / ignorieren wuerde ich diese Warnungen nicht. Evtl. entsteht dadurch halt mal ein Laufzeitfehler und dann sucht man sicht tot.<br />
Vielleicht wirklich einfach alles casten, sind bei mir wohl auch immer die meisten Warnungen die auftreten.</p>
<p>Wuesste jetzt spontan leider net, wo man sie in der IDE ausmachen kann.</p>
<p>MfG, Heimdall83</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121919</guid><dc:creator><![CDATA[Heimdall83]]></dc:creator><pubDate>Tue, 22 Aug 2006 06:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Tue, 22 Aug 2006 06:40:38 GMT]]></title><description><![CDATA[<p>Das Ausscahlten von solchen Warnung per pragma wäre in meinen Augen sehr unvorsichtig und gefährlich. Korrekt ist es einen entsprechenden static_cast zu verwenden.</p>
<p>Bei Deinem Beispiel<br />
floatwert1 = 0.5 * floatwert2;<br />
muss Dir klar sein, das 0.5 ein double ist. Damit erfolgt auch die gesamte Arithmetik auf double und damit geht bei der Zuweisung entsprechend natürlich genaugkeit verloren.</p>
<p>Du hast auch die Möglichkeit folgendes zu schreiben:<br />
floatwert1 = floatwert2 / 2;<br />
das löst such keinen Fehler aus.</p>
<p>Ich weiß nicht genau was Du meinst woie man die Meldung bei Variablen ausschaltet.<br />
Das Problem ist das der C/C++ Compiler automatisch den höchst wertigsten Datentyp verwendet für die Kalkulation, den Du in der Berechnung angegeben hast. Und bei dir ist eben 0.5 ein double!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121938</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 22 Aug 2006 06:40:38 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Tue, 22 Aug 2006 07:30:15 GMT]]></title><description><![CDATA[<p>schreib doch hinter die 0.5 einfach ein f.</p>
<pre><code class="language-cpp">floatwert1 = 0.5f * floatwert2;
</code></pre>
<p>Im übrigen, der Compiler nervt nicht, sondern will dir mit den Warnungen nur helfen. Hier gilt mal wieder der Spruch &quot;Egal wie man es macht, es ist falsch.&quot; Also, sehe das als Hilfe an, um deine Programme besser zu machen. Die meisten Warnings sind Hinweise, auf späteres _mögliches_ Fehlverhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121958</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 22 Aug 2006 07:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Tue, 22 Aug 2006 07:39:22 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Bei Deinem Beispiel<br />
floatwert1 = 0.5 * floatwert2;<br />
muss Dir klar sein, das 0.5 ein double ist.</p>
</blockquote>
<p>Ist mir auch klar :)... (...aufgrund der Warnungen <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>Martin Richter schrieb:</p>
<blockquote>
<p>Du hast auch die Möglichkeit folgendes zu schreiben:<br />
floatwert1 = floatwert2 / 2;<br />
das löst such keinen Fehler aus.</p>
</blockquote>
<p>Danke, das mit 0.5 war allerdings nur ein Beispiel. <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 />
[Wobei intern *0.5 und /2 anders berechnet werden, was da wohl effizienter ist...?]</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Ich weiß nicht genau was Du meinst wie man die Meldung bei Variablen ausschaltet.</p>
</blockquote>
<p>Ich wollte eigentlich nur sagen: Wenn es beim compilen/builden einen Error gab wäre es praktisch, wenn nur diese(r) angezeigt würde und nicht die Warnungen, in einem Wust von Warnungen ist so ein Error nämlich manchmal nicht leicht zu finden.</p>
<p>Derweil habe ich übrigens mal alle &quot;conversion from 'double' to 'float', possible loss of data&quot; Warnungen beseitigt (bei mir: 51), indem ich (z.B. ;)) statt 0.5 0.5f schrieb, was wohl bedeuten soll, dass diese Konstante als float interpretiert werden soll. Das war weniger Schreibarbeit als die casts. <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 />
Diesen 0.5f statt 0.5 Trick habe ich mal nebenbei in einem Beispiel gesehen, weiß jemand, wie diese Technik heißt und ob es da noch mehrere Möglichkeiten außer dem Anhängen von 'f' gibt?</p>
<p>Und noch eine andere Frage, um die Warnungen &quot;Conversation from float to short&quot; und ähnliches loszuwerden:<br />
Gibt es dazu eine schöne Rundungsfunktion?<br />
(Eine Rundungsfunktion gefiele mir besser als ein cast, da der ja aus 0.9 0 macht, oder etwa nicht?)</p>
<p>Danke und Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121963</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Tue, 22 Aug 2006 07:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Tue, 22 Aug 2006 07:56:59 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Im übrigen, der Compiler nervt nicht, sondern will dir mit den Warnungen nur helfen.</p>
</blockquote>
<p>Gut, ich schränke diese Aussage auf den Fall ein, dass man in &gt;100 Warnungen einen Error suchen muss. <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 />
Allerdings gibt es schon nervige Stellen, wie z.B. dass Checkboxes (auch, wenn sie nur wie üblich zwei Zustände haben) mit einer BOOL Variablen verbunden werden statt mit bool. Dann hagelt es nämlich &quot;warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)&quot; Warnungen.<br />
(Schon klar warum: BOOL hat mehr als 2 Zustände und ist im Grunde nicht anderes als kleine ganze Zahlen, z.B. für Checkboxes mit dem Zustand disabled oder so...)</p>
<p>Nur, wie wird man diese Warnungen am besten los?<br />
Immer eine if Unterscheidung à la:</p>
<pre><code class="language-cpp">if (BOOLvariable == TRUE) boolvariable = true;
else boolvariabble = false;
</code></pre>
<p>?</p>
<p>Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121975</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Tue, 22 Aug 2006 07:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Tue, 22 Aug 2006 08:08:37 GMT]]></title><description><![CDATA[<p>Ich glaub eine Rundungsfunktion gibt es nicht. Zumindest habe ich nie eine gefunden. Du kannst sie aber selber schreiben:</p>
<pre><code class="language-cpp">template&lt;class ReturnType, class RoundType&gt;
ReturnType RoundIt(RoundType x, int nDecimals)
{
    RoundType rtHalf = static_cast&lt;RoundType&gt;(0.5);
    rtHalf *= (x &lt; 0 ? -1 : 1);
    x *= pow(static_cast&lt;RoundType&gt;(10), nDecimals);
    x += rtHalf;
    x *= pow(static_cast&lt;RoundType&gt;(10), -nDecimals);

    return static_cast&lt;ReturnType&gt;(x);
}
</code></pre>
<p>Gibt glaub ich noch effektivere.</p>
<p>zu deiner Frage im zweiten Post *danke Vorschaufenster*</p>
<pre><code class="language-cpp">BOOL B /*= TRUE or FALSE*/;
bool b = static_cast&lt;bool&gt;(B);
</code></pre>
<p>sollte eigentlich reichen.<br />
kannst aber auf folgendes tun:</p>
<pre><code class="language-cpp">bool b = (B ? true : false);
</code></pre>
<p>Grüssli</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121982</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 22 Aug 2006 08:08:37 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Tue, 22 Aug 2006 12:44:40 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Ich glaub eine Rundungsfunktion gibt es nicht. Zumindest habe ich nie eine gefunden. Du kannst sie aber selber schreiben:</p>
<p>...</p>
<p>Gibt glaub ich noch effektivere.</p>
</blockquote>
<p>Sowas, keine Rundungsfunktion!<br />
Naja, für positive rationale Zahlen ist mir noch was kürzeres eingefallen:</p>
<pre><code class="language-cpp">shortwert = static_cast&lt;short&gt;(floatwert + 0.5);
</code></pre>
<p>Aber sobald negative Zahlen berücksichtigt werden sollen, reicht dieser Einzeiler wohl nicht mehr, da ist Dein Template wohl doch praktischer. Danke!</p>
<p>Dravere schrieb:</p>
<blockquote>
<p>kannst aber auf folgendes tun:</p>
<pre><code class="language-cpp">bool b = (B ? true : false);
</code></pre>
</blockquote>
<p>Das sieht tatsächlich schön kompakt aus. <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/1122092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1122092</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Tue, 22 Aug 2006 12:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Wed, 23 Aug 2006 11:06:57 GMT]]></title><description><![CDATA[<p>In Visual Studio 2005 gibt es die &quot;Error List&quot; da kann man dann einzeln nach Error, Warning und Messages sortieren. Das hilft schon ungemein, wenn man von Warnungen nur so überschüttet wird <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>Und für so kleine Sachen wie BOOL zu bool kann man sich ja ein kleines Macro schreiben. Dann muss man nicht immer so eine if-Verzweigung einbauen. So helf ich mir halt schon mal hin und wieder aus.</p>
<p>bis denn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1122734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1122734</guid><dc:creator><![CDATA[Mr.Yellow]]></dc:creator><pubDate>Wed, 23 Aug 2006 11:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Wed, 23 Aug 2006 11:19:48 GMT]]></title><description><![CDATA[<p>dong schrieb:</p>
<blockquote>
<p>Gut, ich schränke diese Aussage auf den Fall ein, dass man in &gt;100 Warnungen einen Error suchen muss. <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>Sorry, dann kannst du einfach nicht mit deinem Werkzeug umgehen. Es gibt eine Todo-Liste (ab VC++2003, vielleich auch 2002?) in der auch die Warnings und Errors aufgelistet werden. Diese Liste kann man mit einem Mouseclick auf den Tabellenkopf sortieren. Evtl. gibts auch einen Filter? (weiß ich nicht) Und wer diese Liste nicht kennt: man kann auch alternativ (wenn mans so will) mit Strg+F im Ausgabefenster nach Errors suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1122746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1122746</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 23 Aug 2006 11:19:48 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun mit Visual Studio Compiler Warnungen? on Wed, 23 Aug 2006 12:27:07 GMT]]></title><description><![CDATA[<p>Mr.Yellow schrieb:</p>
<blockquote>
<p>In Visual Studio 2005 gibt es die &quot;Error List&quot; da kann man dann einzeln nach Error, Warning und Messages sortieren. Das hilft schon ungemein, wenn man von Warnungen nur so überschüttet wird <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>Prima, das ist genau das, was ich brauchte, danke! <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>Artchi schrieb:</p>
<blockquote>
<p>dong schrieb:</p>
<blockquote>
<p>Gut, ich schränke diese Aussage auf den Fall ein, dass man in &gt;100 Warnungen einen Error suchen muss. <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>Sorry, dann kannst du einfach nicht mit deinem Werkzeug umgehen.</p>
</blockquote>
<p>Das habe ich auch nie behauptet, sonst würde ich ja hier nicht fragen (siehe Signatur...). <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="😉"
    /> <em>[und jetzt behaupte ja niemand, dass die MSDN Dokumentation zu Visual Studio besonders übersichtlich ist...]</em></p>
<p>Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1122822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1122822</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Wed, 23 Aug 2006 12:27:07 GMT</pubDate></item></channel></rss>