<?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[ganzen {}-blöcken werte zuweisen?]]></title><description><![CDATA[<p>hi folks!<br />
habe hier eine sehr allgemeine frage: könnte man's irgendwie in c++ realisieren, dass ganzen {}-blöcken werte zugewiesen werden?</p>
<p>es geht um etwa um folgendes: wie schreibe ich ein makro, das sich selbst eine lokale variable erzeugt, dann damit irgendetwas macht, danach etwas zurückgibt, und die lokale variable löscht?</p>
<p>hab da an so was ähnliches gedacht:</p>
<pre><code class="language-cpp">#define MY_MACRO(x) {int y=100; return x+y;}

//verwendung:
int i=MY_MACRO(50); //i=150;

//...return funktioniert offensichtlich nur bei funktionen, und nicht bei den einzelnen {}-blöcken :-/
</code></pre>
<p>wie zu erwarten war, hats nicht funktioniert...<br />
wisst ihr, wie man so etwas anstellen könnte, ohne eine extra funktion dafür zu schreiben?</p>
<p>weis, ist ne komische, und irgendwie sinnlos aussehende frage, wäre aber für jeden vorschlag dankbar</p>
<p>mfg andrey</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159541/ganzen-blöcken-werte-zuweisen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:51:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159541.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Sep 2006 11:05:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 11:05:04 GMT]]></title><description><![CDATA[<p>hi folks!<br />
habe hier eine sehr allgemeine frage: könnte man's irgendwie in c++ realisieren, dass ganzen {}-blöcken werte zugewiesen werden?</p>
<p>es geht um etwa um folgendes: wie schreibe ich ein makro, das sich selbst eine lokale variable erzeugt, dann damit irgendetwas macht, danach etwas zurückgibt, und die lokale variable löscht?</p>
<p>hab da an so was ähnliches gedacht:</p>
<pre><code class="language-cpp">#define MY_MACRO(x) {int y=100; return x+y;}

//verwendung:
int i=MY_MACRO(50); //i=150;

//...return funktioniert offensichtlich nur bei funktionen, und nicht bei den einzelnen {}-blöcken :-/
</code></pre>
<p>wie zu erwarten war, hats nicht funktioniert...<br />
wisst ihr, wie man so etwas anstellen könnte, ohne eine extra funktion dafür zu schreiben?</p>
<p>weis, ist ne komische, und irgendwie sinnlos aussehende frage, wäre aber für jeden vorschlag dankbar</p>
<p>mfg andrey</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138405</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sat, 16 Sep 2006 11:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 11:11:13 GMT]]></title><description><![CDATA[<p>#define MY_MACRO(x) x*100</p>
<p>int i = MY_MACRO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138408</guid><dc:creator><![CDATA[ESS_CB]]></dc:creator><pubDate>Sat, 16 Sep 2006 11:11:13 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 11:30:04 GMT]]></title><description><![CDATA[<p>sry, verstehe ich nicht, wo soll da drin eine lokale variable sein? und was bedeutet</p>
<pre><code class="language-cpp">int i=MY_MACRO
</code></pre>
<p>ohne parameter, klammer und semikolons?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138417</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sat, 16 Sep 2006 11:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 11:45:56 GMT]]></title><description><![CDATA[<p>Hi,<br />
was soll der Sinn der Sache sein? Es gibt nicht ohne Grund Funktionen...</p>
<pre><code class="language-cpp">inline int Add( int x )
{
 return x + 100;
}

//...

int i = Add( 50 );
</code></pre>
<p>Gruß</p>
<p>Edit:<br />
Ah ich glaub ich habs nun verstanden was du meinst:</p>
<pre><code class="language-cpp">#define ADD( x ) x + 100

// ...

int i = ADD( 50 );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1138423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138423</guid><dc:creator><![CDATA[Dummie]]></dc:creator><pubDate>Sat, 16 Sep 2006 11:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 12:04:13 GMT]]></title><description><![CDATA[<p>Ohne Macros gehts auch!</p>
<pre><code class="language-cpp">template&lt; int x &gt;
struct _100plusX
{
	enum { value = x+100 };
};

// ...

int i = _100plusX&lt; 50 &gt;::value;

// ...
</code></pre>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138436</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Sep 2006 12:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 12:58:13 GMT]]></title><description><![CDATA[<p>ooookay okay okay okay...<br />
wenn euch die konkrete anwendung interessiert: bitte sehr</p>
<p>in DX gibts eine struktur D3DCOLORVALUE die aus den angaben der farben und transparenz in float werten besteht ( r,g,b,a )</p>
<p>was ich jetzt wollte: ein makro, das mir aus den vier floats eine D3DCOLORVALUE struktur zusammenbaut, also vier floats annimmt, und eine einzige struktur wieder zurückgibt. dafür wollte ich ein makro schreiben, das zuerst die vier floats in ein array schreibt, aund dann den dereferenzierten pointer auf den array-anfang zurückgibt, in etwa so:</p>
<pre><code class="language-cpp">#define D3DCOLORVALUE_RGBA(r,g,b,a) \
{ float array[]={r,g,b,a}; return *((D3DCOLORVALUE*)(array)); }

//nicht funzender &quot;pseudo-code&quot;
//idee: das sollte eine &quot;funktion ohne funktionskopf&quot; werden
</code></pre>
<p>ich könnte es natürlich auch einfach als eine funktion definieren:</p>
<pre><code class="language-cpp">D3DCOLORVALUE D3DCOLORVALUE_RGBA(r,g,b,a){
  float array[]={r,g,b,a};
  return *((D3DCOLORVALUE*)(array));
}
</code></pre>
<p>würde gehen, klar, nur irgendwie habe ich grad keine lust den code mit irgendwelchen irgendwo gloabal definierten funktionen vollzustopfen, oder für diese eine einzige funktion irgendsoeine singletonklasse zu schreiben, oder die an irgendeine andere klasse dranzuhängen, die eigentlich nichts damit zu tun hat... mit anderen worten: ich wills als eine einfache textersetzung haben. ausschlieslich für die einheitlichkeit und übersichtlichkeit, damit ich nirgendwo pseudo-makros stehen hab, die gar keine makros sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138466</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sat, 16 Sep 2006 12:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:14:57 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#define D3DCOLORVALUE_RGBA( r, g, b, a ) { r, g, b, a }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1138473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138473</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:14:57 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:27:44 GMT]]></title><description><![CDATA[<p>ähm...<br />
schön wärs, das klappt leider nur bei initialisierungen, genau wie bei den arrays... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">D3DCOLORVALUE myColor={0.1f, 0.2f, 0.3f, 0.4f}; //klappt
myColor={0.9f, 0.8f, 0.7f, 0.6f}; //klappt nicht mehr
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1138485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138485</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:30:19 GMT]]></title><description><![CDATA[<p>So isses! Ansonsten würde ich dir dringent zu inline Funktionen raten. Oder einer Wrapperklasse statt dich mit fragwürdigen Macros rumzuschlagen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138488</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:30:19 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:30:40 GMT]]></title><description><![CDATA[<p>naja, egal, vergessts leute, ich mach das jetzt einfach doch zu einer globalen funktion, der kleine stilbruch wird schon keine auswirkungen haben...</p>
<p>trotzdem allen vielen dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138489</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:35:15 GMT]]></title><description><![CDATA[<p>ne, eine &quot;wrapperklasse&quot; wäre schon echt total overkill wegen einem einzigen blöden makro <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="😃"
    /><br />
globale inline funktion wäre da echt angebrachter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138493</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:35:15 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:37:08 GMT]]></title><description><![CDATA[<p>Andrey schrieb:</p>
<blockquote>
<p>naja, egal, vergessts leute, ich mach das jetzt einfach doch zu einer globalen funktion, der kleine stilbruch wird schon keine auswirkungen haben...</p>
</blockquote>
<p>Eh? Du ziehst ein Makro einer freien Funktion vor?<br />
(Unabhängig davon dass weder Makro noch Funktion noch sonstwas den C++-Standard ändern werden: was du vorhast funktioniert in der Form einfach nicht.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138495</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:37:08 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:40:58 GMT]]></title><description><![CDATA[<p>Wenn es dein Stil ist in C++ <strong>nur</strong> Objektorientiert zu Programmieren, dann schreib dir doch eine Klasse:</p>
<pre><code class="language-cpp">class ColorValue
{
private:
	float r, g, b, a;

public:
	ColorValue()
	: r( 0 ), g( 0 ), b( 0 ), a( 0 )
	{}

	void operator()( float _r, float _g, float _b, float _a )
	{
		r = _r;
		g = _g;
		b = _b;
		a = _a;
	}

	void Set(  float _r, float _g, float _b, float _a )
	{
		r = _r;
		g = _g;
		b = _b;
		a = _a;
	}

	operator D3DCOLORVALUE()
	{
		return *reinterpret_cast&lt; D3DCOLORVALUE *&gt;( this );
	}
};
</code></pre>
<p>Edit:</p>
<blockquote>
<p>ne, eine &quot;wrapperklasse&quot; wäre schon echt total overkill wegen einem einzigen blöden makro <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>Naja, wenn du meinst... <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/1138498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138498</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:40:58 GMT</pubDate></item><item><title><![CDATA[Reply to ganzen {}-blöcken werte zuweisen? on Sat, 16 Sep 2006 13:46:21 GMT]]></title><description><![CDATA[<p>Dummie schrieb:</p>
<blockquote>
<p>Hi,<br />
was soll der Sinn der Sache sein? Es gibt nicht ohne Grund Funktionen...</p>
</blockquote>
<p>Einen Sinn gibt es da durchaus, schließlich ist solch ein Code in anderen Sprachen gang und gäbe, z.B. in Ruby. Hier steuern Blöcke z.B. Funktionen höherer Ordnung:</p>
<pre><code>xs = (1..5)
ys = xs.map {|x| x * 2}
puts ys
</code></pre>
<p>Die Ausgabe wäre dann [2, 4, 6, 8, 10] ('map' führt einen Block auf jedes Element eines Arrays aus und gibt das modifizierte Array zurück).</p>
<p>Auch den ternären C++-Operator :? kann man durch den Rückgabewert von Blöcken ersetzen, indem man einfach mit einem Konditional arbeitet: 'y = if (x == 5) then 2 else 3' (Pseudocode). Hier sind '2' und '3' im Prinzip ja Ein-Anweisungs-Blöcke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138506</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 16 Sep 2006 13:46:21 GMT</pubDate></item></channel></rss>