<?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[(gelöst) bitweise verknüpfung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe gerade folgendes festgestellt und wollte wissen wie man das vieleicht verhindern kann.</p>
<pre><code class="language-cpp">#define item_0 1
#define item_1 2
#define item_2 4
...
#define item_11 2048
#define item_mask item_0 | item_4 | item_10
...

void Klasse::meine_schoene_funktion(int status)
{

  //status is zusammengesetzt aus den obigen defines oder 0

  if((status &amp; item_mask) != 0)
  {
    tu_etwas_ganz_tolles()
  }

}
</code></pre>
<p>Die Funktion &quot;tu_etwas_ganz_tolles()&quot; wird bei mir auch ausgeführt wenn status 0 ist. Danke für die Aufmerksamkeit.</p>
<p>Gruß</p>
<p>eviluser</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216047/gelöst-bitweise-verknüpfung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 18:35:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216047.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jun 2008 14:39:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (gelöst) bitweise verknüpfung on Thu, 19 Jun 2008 11:34:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe gerade folgendes festgestellt und wollte wissen wie man das vieleicht verhindern kann.</p>
<pre><code class="language-cpp">#define item_0 1
#define item_1 2
#define item_2 4
...
#define item_11 2048
#define item_mask item_0 | item_4 | item_10
...

void Klasse::meine_schoene_funktion(int status)
{

  //status is zusammengesetzt aus den obigen defines oder 0

  if((status &amp; item_mask) != 0)
  {
    tu_etwas_ganz_tolles()
  }

}
</code></pre>
<p>Die Funktion &quot;tu_etwas_ganz_tolles()&quot; wird bei mir auch ausgeführt wenn status 0 ist. Danke für die Aufmerksamkeit.</p>
<p>Gruß</p>
<p>eviluser</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1531653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531653</guid><dc:creator><![CDATA[eviluser]]></dc:creator><pubDate>Thu, 19 Jun 2008 11:34:03 GMT</pubDate></item><item><title><![CDATA[Reply to (gelöst) bitweise verknüpfung on Wed, 18 Jun 2008 14:53:17 GMT]]></title><description><![CDATA[<p>Lösung: Verzichte auf '#defines', die tun in Deinem Code nicht das, was Du erwartest.</p>
<p>Konstanten kannst Du (*solltest* Du) unter C++ per 'const' (oder als 'enum') deklarieren:</p>
<pre><code class="language-cpp">enum items {
    item_0 = 1,
    item_1 = 2,
    item_2 = 4,
    item_11 = 2048,
    item_mask = item_0 | item_4 | item_10
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1531660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531660</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 18 Jun 2008 14:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to (gelöst) bitweise verknüpfung on Wed, 18 Jun 2008 14:55:10 GMT]]></title><description><![CDATA[<p>Wenn die Zeile:<br />
if((status &amp; item_mask) != 0)</p>
<p>im Präprozesser aufgebaut wird dann kommnt:</p>
<p>if((status &amp; item_0 | item_4 | item_10) != 0)</p>
<p>raus. Was wohl nicht deine Vorstellung entsprechen dürfte.</p>
<p>Wenn ich dich richtig verstehe, dann musst Du nur item_mask richtig klammern.</p>
<p>#define item_mask (item_0 | item_4 | item_10)</p>
<p>Babbage</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1531661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531661</guid><dc:creator><![CDATA[Babbage]]></dc:creator><pubDate>Wed, 18 Jun 2008 14:55:10 GMT</pubDate></item><item><title><![CDATA[Reply to (gelöst) bitweise verknüpfung on Wed, 18 Jun 2008 14:57:16 GMT]]></title><description><![CDATA[<p>Verwende Makros nur wo es unbedingt nötig ist</p>
<p>Du zeigst den klassischen Fall auf, in dem man lieber darauf verzichtet.<br />
Makros sind dumme Textersetzungen, für Konstanten entweder enum oder const verwenden.</p>
<p>Durch die Textersetzung passiert folgendes:<br />
Aus...</p>
<pre><code class="language-cpp">if((status &amp; item_mask) != 0)
</code></pre>
<p>...wird...</p>
<pre><code class="language-cpp">if((status &amp; 1 | 2 | 4) != 0)
</code></pre>
<p>Und ich hoffe du findest deinen Fehler jetzt <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>cu André<br />
P.S: Der Vorteil an Foren ist das mehrere paralell Texte einfügen können, der Nachteil ebenso ;)... Oder kurz gesagt... zu Spät</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1531662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531662</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 Jun 2008 14:57:16 GMT</pubDate></item><item><title><![CDATA[Reply to (gelöst) bitweise verknüpfung on Wed, 18 Jun 2008 14:56:54 GMT]]></title><description><![CDATA[<p>Oder so.<br />
Naja immerhin war ich zweiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1531663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531663</guid><dc:creator><![CDATA[Babbage]]></dc:creator><pubDate>Wed, 18 Jun 2008 14:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to (gelöst) bitweise verknüpfung on Thu, 19 Jun 2008 11:30:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">if(0 &amp; 1 | 2 | 1024)...
</code></pre>
<p>Genau das ist passiert. Mit der Klammerung hat es funktioniert. Das Problem bei der enum ist, ich müsste alle 4095 Möglichkeiten anlegen. Ist mir einbischen zu viel. Konstanten hören sich ganz gut an.</p>
<p>Vielen Dank!!</p>
<p>Gruß</p>
<p>eviluser</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532165</guid><dc:creator><![CDATA[eviluser]]></dc:creator><pubDate>Thu, 19 Jun 2008 11:30:39 GMT</pubDate></item><item><title><![CDATA[Reply to (gelöst) bitweise verknüpfung on Thu, 19 Jun 2008 11:34:31 GMT]]></title><description><![CDATA[<p>eviluser schrieb:</p>
<blockquote>
<p>Das Problem bei der enum ist, ich müsste alle 4095 Möglichkeiten anlegen. Ist mir einbischen zu viel. Konstanten hören sich ganz gut an.</p>
</blockquote>
<p>Wieso müsstest du bei einem enum alle Fälle abdecken? Du musst nicht zwangsweise den Enum zum speichern nehmen, wenn du ein int verwendest geht das genauso (Sprich die enums nur als benannte konstanten benutzen, was du auch mit Konstanten machen kannst).</p>
<pre><code class="language-cpp">enum Test
{
  T1 = 1,
  T2 = 2,
  T3 = 4
};

int value = T1 | T3;
</code></pre>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532169</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 19 Jun 2008 11:34:31 GMT</pubDate></item></channel></rss>