<?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[Komische Funktionsdeklaration mit &amp;quot;...&amp;quot;]]></title><description><![CDATA[<p>Hi,<br />
ich hoffe ich bin in diesem Forum richtig.<br />
Ich habe eine Klasse von Codeproject eingebunden mit der ich<br />
ein ListControl sortieren kann (<a href="http://www.codeproject.com/KB/list/sortlistctrl.aspx" rel="nofollow">http://www.codeproject.com/KB/list/sortlistctrl.aspx</a>)</p>
<p>Nun ist dort eine Funktion wie folgt vorhanden:</p>
<pre><code class="language-cpp">int AddItem( LPCTSTR pszText,... );
</code></pre>
<p>bzw.:</p>
<pre><code class="language-cpp">int CSortListCtrl::AddItem( LPCTSTR pszText,... )
{
	const int iIndex = InsertItem( GetItemCount(), pszText );

	LPTSTR* arrpsz = new LPTSTR[ m_iNumColumns ];
	arrpsz[ 0 ] = new TCHAR[ lstrlen( pszText ) + 1 ];
	(void)lstrcpy( arrpsz[ 0 ], pszText );

 	va_list list;
	va_start( list, pszText );

	for( int iColumn = 1; iColumn &lt; m_iNumColumns; iColumn++ )
	{
		pszText = va_arg( list, LPCTSTR );
		ASSERT_VALID_STRING( pszText );
		VERIFY( CListCtrl::SetItem( iIndex, iColumn, LVIF_TEXT, pszText, 0, 0, 0, 0 ) );

		arrpsz[ iColumn ] = new TCHAR[ lstrlen( pszText ) + 1 ];
		(void)lstrcpy( arrpsz[ iColumn ], pszText );
	}

	va_end( list );

	VERIFY( SetTextArray( iIndex, arrpsz ) );

	return iIndex;
}
</code></pre>
<p>Mich würde interessieren, warum das durchkompiliert ohne Fehler anzuzeigen.<br />
Ich habe noch nie gesehen, dass irgendwo einfach drei Punkte angegeben wurden.<br />
Was ja wahrscheinlich bedeuten soll, dass man beliebig viele Parameter übergeben<br />
kann? Oder wie muss ich das verstehen <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="😕"
    /> (Ich nutze VS 2008 SP1)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252813/komische-funktionsdeklaration-mit-quot-quot</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 04:54:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252813.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Oct 2009 22:17:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komische Funktionsdeklaration mit &amp;quot;...&amp;quot; on Sat, 24 Oct 2009 22:17:38 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich hoffe ich bin in diesem Forum richtig.<br />
Ich habe eine Klasse von Codeproject eingebunden mit der ich<br />
ein ListControl sortieren kann (<a href="http://www.codeproject.com/KB/list/sortlistctrl.aspx" rel="nofollow">http://www.codeproject.com/KB/list/sortlistctrl.aspx</a>)</p>
<p>Nun ist dort eine Funktion wie folgt vorhanden:</p>
<pre><code class="language-cpp">int AddItem( LPCTSTR pszText,... );
</code></pre>
<p>bzw.:</p>
<pre><code class="language-cpp">int CSortListCtrl::AddItem( LPCTSTR pszText,... )
{
	const int iIndex = InsertItem( GetItemCount(), pszText );

	LPTSTR* arrpsz = new LPTSTR[ m_iNumColumns ];
	arrpsz[ 0 ] = new TCHAR[ lstrlen( pszText ) + 1 ];
	(void)lstrcpy( arrpsz[ 0 ], pszText );

 	va_list list;
	va_start( list, pszText );

	for( int iColumn = 1; iColumn &lt; m_iNumColumns; iColumn++ )
	{
		pszText = va_arg( list, LPCTSTR );
		ASSERT_VALID_STRING( pszText );
		VERIFY( CListCtrl::SetItem( iIndex, iColumn, LVIF_TEXT, pszText, 0, 0, 0, 0 ) );

		arrpsz[ iColumn ] = new TCHAR[ lstrlen( pszText ) + 1 ];
		(void)lstrcpy( arrpsz[ iColumn ], pszText );
	}

	va_end( list );

	VERIFY( SetTextArray( iIndex, arrpsz ) );

	return iIndex;
}
</code></pre>
<p>Mich würde interessieren, warum das durchkompiliert ohne Fehler anzuzeigen.<br />
Ich habe noch nie gesehen, dass irgendwo einfach drei Punkte angegeben wurden.<br />
Was ja wahrscheinlich bedeuten soll, dass man beliebig viele Parameter übergeben<br />
kann? Oder wie muss ich das verstehen <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="😕"
    /> (Ich nutze VS 2008 SP1)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797746</guid><dc:creator><![CDATA[Elpi]]></dc:creator><pubDate>Sat, 24 Oct 2009 22:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Funktionsdeklaration mit &amp;quot;...&amp;quot; on Sat, 24 Oct 2009 22:20:23 GMT]]></title><description><![CDATA[<p>Schau dir hier das Beispiel an: <a href="http://www.cplusplus.com/reference/clibrary/cstdarg/va_start/" rel="nofollow">http://www.cplusplus.com/reference/clibrary/cstdarg/va_start/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797748</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sat, 24 Oct 2009 22:20:23 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Funktionsdeklaration mit &amp;quot;...&amp;quot; on Sat, 24 Oct 2009 22:22:08 GMT]]></title><description><![CDATA[<p>die Punkte nennen sich Ellipse. Schau mal im Buch/Tutorial deiner Wahl nach variablen Argumenten oder va_args.<br />
Als Hinweis: die Dinger dürfen nur verwendet werden, wenn die zusätzlichen Parameter PODs sind. (Was das ist steht in der FAQ)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797750</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 24 Oct 2009 22:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Funktionsdeklaration mit &amp;quot;...&amp;quot; on Sat, 24 Oct 2009 22:30:57 GMT]]></title><description><![CDATA[<p>Hallo und viele Dank für diese Info.<br />
Das ist ja genial mit den variablen Argumenten...:-)</p>
<p>Mich wundert nur, warum es an dieser Stelle bei einem anderen<br />
Rechner (Vista) Probleme in der Programmausführung gab. Das Programm<br />
ist genau an der Stelle wo diese Funktion gerufen wurde abgeschmiert.<br />
Beim Kompilieren gab es aber keinerlei Probleme.</p>
<p>Leider bekomme ich das nicht mehr nachgestellt, da der Rechner<br />
auf dem das der Fall war inzwischen nicht mehr vorhanden ist und ich<br />
auch keinen anderen Vista Rechner zur Verfügung habe um es nochmals zu<br />
testen.</p>
<p>Kann das überhaupt zu OS spezifischen Problemen durch die Verwendung<br />
von &quot;va_&quot; Funktionen kommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797755</guid><dc:creator><![CDATA[Elpi]]></dc:creator><pubDate>Sat, 24 Oct 2009 22:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Funktionsdeklaration mit &amp;quot;...&amp;quot; on Sun, 25 Oct 2009 09:24:59 GMT]]></title><description><![CDATA[<p>Elpi schrieb:</p>
<blockquote>
<p>Das ist ja genial mit den variablen Argumenten...:-)</p>
</blockquote>
<p>So toll ist das gar nicht. Die Typsicherheit geht Dir damit flöten. Du kannst auch wirklich nur PODs übergeben und nicht so etwas wie std::string zum Beispiel.</p>
<p>Ich habe vor nicht allzu langer Zeit gelernt, dass der GCC bei einigen Aufrufen solcher Funktionen die Typen überprüfen kann. Das erste Argument muss dazu ein String-Literal im printf-Format sein. Natürlich kannst Du theoretisch auch ein eigenes Format benutzen, um Zahl und Art der folgenden Parameter zu kodieren. Kein Compiler kann dann aber sicherstellen, dass die Funktion &quot;richtig&quot; implementiert wurde und dass die Funktion &quot;richtig&quot; aufgerufen wird.</p>
<p>Mein Punkt ist: Du brauchst das mit den &quot;var args&quot; eigentlich nicht lernen -- nur wissen, dass es das gibt. Ich habe noch nie das Bedürfnis gehabt, es zu benutzen. C++ bietet Mittel und Wege, um zB eine formatierte Ausgabe <em>typsicher</em> und <em>erweiterbar</em> zu machen, siehe <a href="http://www.boost.org/doc/libs/1_34_1/libs/format/doc/format.html" rel="nofollow">Boost.Format</a>.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797849</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 25 Oct 2009 09:24:59 GMT</pubDate></item></channel></rss>