<?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[problem mit max-Makro und max-Funktionen beim kompilieren]]></title><description><![CDATA[<p>ein Problem, dass mich schon länger ärgert. Fiel mir bei dem<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-190196-and-sid-is-7e12e2f58d3fc71767745cf1d97209c2.html" rel="nofollow">MAXFLOAT-Thread</a><br />
wieder ein</p>
<p>Bei uns kommt es hin und wieder vor, dass der Kompiler Fehler auswirft, wenn ich <em>std::numeric_limits&lt;int&gt;::max()</em> oder andere Methoden nutze, die <em>max</em> verwenden. Es gibt enn immer einen Konflikt. Sowas wie <em>&quot;::&quot; nicht erlaubt vor MAkro max</em> etc.<br />
Bisher löse ich das Problem immer nur ein <em>#undef max</em>.<br />
Würde aber gerne wissen, ob einer von euch weiß wo ein solches in den std-definiert wird oder wie man das Problem sonst umgehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190250/problem-mit-max-makro-und-max-funktionen-beim-kompilieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 13:24:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190250.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Aug 2007 08:02:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 08:03:33 GMT]]></title><description><![CDATA[<p>ein Problem, dass mich schon länger ärgert. Fiel mir bei dem<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-190196-and-sid-is-7e12e2f58d3fc71767745cf1d97209c2.html" rel="nofollow">MAXFLOAT-Thread</a><br />
wieder ein</p>
<p>Bei uns kommt es hin und wieder vor, dass der Kompiler Fehler auswirft, wenn ich <em>std::numeric_limits&lt;int&gt;::max()</em> oder andere Methoden nutze, die <em>max</em> verwenden. Es gibt enn immer einen Konflikt. Sowas wie <em>&quot;::&quot; nicht erlaubt vor MAkro max</em> etc.<br />
Bisher löse ich das Problem immer nur ein <em>#undef max</em>.<br />
Würde aber gerne wissen, ob einer von euch weiß wo ein solches in den std-definiert wird oder wie man das Problem sonst umgehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348718</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 21 Aug 2007 08:03:33 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 08:08:26 GMT]]></title><description><![CDATA[<p>Im Standard gibt es keine Makros min/max, nur Funktionstemplates (und die Mitglieder von numeric_limits natürlich). Demnach sind die Definitionen aus Fremdbibliotheken (entweder C oder miserables C++).</p>
<p>C: hilft wohl nur undef vor der Verwendung der Templates.<br />
Miserables C++: Wechsle die Fremdbibliothek <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/1348724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348724</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 21 Aug 2007 08:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 09:26:46 GMT]]></title><description><![CDATA[<p>Windows?</p>
<pre><code class="language-cpp">#define NOMINMAX
#include &lt;windows.h&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1348801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348801</guid><dc:creator><![CDATA[*******]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 09:42:56 GMT]]></title><description><![CDATA[<p>hmmm... scheitn ein MS VS prob zu sein...<br />
denn in windef.h findet man:</p>
<pre><code class="language-cpp">#ifndef max
 #define max(a,b)            (((a) &gt; (b)) ? (a) : (b))
 #endif

 #ifndef min
 #define min(a,b)            (((a) &lt; (b)) ? (a) : (b))
 #endif
</code></pre>
<p>mein projekt ist ein reines kosnolen-projekt.<br />
welcher header included windef.h?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348823</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 09:49:26 GMT]]></title><description><![CDATA[<p>windef.h wird vermutlich von windows.h includet. Der Tipp von *** war in dem Zusammenhang schon ganz gut!</p>
<p>Am besten Du definierst NOMINMAX global als Projekt-Define. Wenn einer von den Windows-Headern die Makros braucht, kannst Du ihnen problemlos die Templates unterschieben, indem Du sie im globalen Namensraum bekannt machst. Auf die Weise kannst Du ungehindert numeric_limits::max benutzen <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>Beispiel:</p>
<pre><code class="language-cpp">#define NOMINMAX // am besten projektweit definieren

#include &lt;algorithm&gt; // für std::min/std::max

using std::min;
using std::max; // bekanntmachen der Templates im globalen NS

#include &lt;windows.h&gt; // wenn hier drin jetzt die Makros benutzt werden, wird in Wirklichkeit std::min/std::max benutzt
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1348831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348831</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:49:26 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 10:46:32 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>windef.h wird vermutlich von windows.h includet. Der Tipp von *** war in dem Zusammenhang schon ganz gut!</p>
<p>Am besten Du definierst NOMINMAX global als Projekt-Define. ...</p>
</blockquote>
<p>... oder gleich die windows.h rausschmeissen. Wenn es sich sowieso um eine reine KonsolenApp handelt, ist die Chance hoch, dass man ohne sie auskommt und mit Portabilität belohnt wird. <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348869</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 21 Aug 2007 10:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 12:06:22 GMT]]></title><description><![CDATA[<p>EDIT:<br />
okay... windows.h wird unter windoof inkludiert...<br />
aber mit NOMINMAX als globale Präprozessordefinition kann ich mir die undefs ersparen! danke ***** und den anderen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348931</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 21 Aug 2007 12:06:22 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 13:51:44 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>... windows.h wird unter windoof inkludiert...</p>
</blockquote>
<p>von wem ? und warum ?<br />
Ich schreibe auch Code für/unter Windows und habe die nicht inkludiert...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349068</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 21 Aug 2007 13:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 14:03:18 GMT]]></title><description><![CDATA[<p>ich brauch sie für ::Sleep(...).<br />
und ne 3rdPartyLib für andere windows spezifische dateien...</p>
<p>aber dennoch plattform unabhängig durch #ifdefs</p>
<p>klar ich koennte hier auch #include &lt;winbase.h&gt; machen, aber irgendwas ist ja immer <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/1349075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349075</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 21 Aug 2007 14:03:18 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 14:27:47 GMT]]></title><description><![CDATA[<p>Der windoof-Teil ist aber mti Sicherheit nicht Plattformunabhaengig. Vielleicht solltest du den plattformspezifischen Teil der Implementation vom Rest des Programms trennen, sprich ein Plattformunabhaengiges Interface bauen fuer die Handvoll Dinge, die Plattformspezifisch implementiert sein muessen. (wenn es mehr als ne Handvoll ist, ist es fraglich ob das dann wirklich noch plattfomrunabhaengig realisiertbar ist)<br />
Dann bruachst du nur in der plattformspezifischen Implementation der Schnittstelle mit den #undefs etc. rumhuehnern, das eigentliche Programm wird von den Makros verschont.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349110</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 21 Aug 2007 14:27:47 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 14:43:00 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>ich brauch sie für ::Sleep(...)....</p>
</blockquote>
<p>::Sleep in einem eigenen (plattformabhängigen) Modul zu kapseln wäre mir dabei sehr viel lieber, als mir dafür die komplette windows.h inkl. Rattenschwanz &quot;reinzuziehen&quot;. Du siehst ja am &quot;MAX&quot;, dass das schon nicht mehr standardkompatibel ist (wenn std::numeric_limits&lt;int&gt;::max() nicht mehr funktioniert, KANN es nicht mehr standardkonform sein) ... wer weiß, was da noch auf Dich zukommt, selbst wenn Du einen workaround für MAX hast...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349126</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 21 Aug 2007 14:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit max-Makro und max-Funktionen beim kompilieren on Tue, 21 Aug 2007 15:18:38 GMT]]></title><description><![CDATA[<p>hehe, das ist klar.<br />
aber das projekt ist schon sehr groß &gt; 250.000 (nur code)<br />
und solche dinge werden aus in den dateien eingebunden in denen sie auch benötigt werden. die ::Sleep methode ist gekapselt in nem extra UbSystem-namespace. nur stand da eben derzeit schlcith udn eifnach #undef min drinnen, was mir optisch so gar nicht gefallen hat. nun steht da ein</p>
<pre><code class="language-cpp">#if defined(min) || defined(max) 
#   error add NOMINMAX to preprocessor defines
#endif
</code></pre>
<p>und derzeit compiliert der code problemlos unter Windows (VS &gt; 6.0) und diversen 32/64 bit linux derivaten mit unterschieldichsten compilern (gcc&gt;3.3, intel &gt;8.0). ich denke, da sind wir schon auf der sicheren seite <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/1349148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349148</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 21 Aug 2007 15:18:38 GMT</pubDate></item></channel></rss>