<?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[wchar_t]]></title><description><![CDATA[<p>Hier mal meinen Codeausschnitt:</p>
<pre><code class="language-cpp">void printFont(const char* str, ...)
	{
		if(!str)
			return;

		float		lenght = 0.0f;
		char		text[512];
		va_list		ap;

		va_start(ap, str);
			vsprintf(text, str, ap);
		va_end(ap);
...

}
</code></pre>
<p>vsprintf(text, str, ap); wird als veraltet deklariert. Welche Methoden müsste ich nehmen?(sie sollten dann auch für wchar_t sein)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/137685/wchar_t</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 19:40:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/137685.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Feb 2006 19:41:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wchar_t on Sun, 19 Feb 2006 19:52:28 GMT]]></title><description><![CDATA[<p>Hier mal meinen Codeausschnitt:</p>
<pre><code class="language-cpp">void printFont(const char* str, ...)
	{
		if(!str)
			return;

		float		lenght = 0.0f;
		char		text[512];
		va_list		ap;

		va_start(ap, str);
			vsprintf(text, str, ap);
		va_end(ap);
...

}
</code></pre>
<p>vsprintf(text, str, ap); wird als veraltet deklariert. Welche Methoden müsste ich nehmen?(sie sollten dann auch für wchar_t sein)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/998124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/998124</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Sun, 19 Feb 2006 19:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t on Sun, 19 Feb 2006 22:28:57 GMT]]></title><description><![CDATA[<p>Für wchar_t gibt es die Funktion vswprintf.</p>
<p>Was das mit dem &quot;veraltet deklariert&quot; betrifft, ist eine etwas eigenartige Geschichte.<br />
Der aktuelle C++ Standard wurde ja 1998 verabschiedet. Und damals sah der Funktionsprototyp von vsprintf in C wie folgt aus:</p>
<pre><code class="language-cpp">int vsprintf(char * s, const char * format, va_list arg);
</code></pre>
<p>Und genau diese Funktion referenziert C++ aufgrund der Kompatibilität zu C. Nun gab es aber ein Jahr später, also 1999, einen neuen C Standard. Und dort sieht die Funktion etwas anders aus:</p>
<pre><code class="language-cpp">int vswprintf(wchar_t * restrict s, size_t n, const wchar_t * restrict format, va_list arg);
</code></pre>
<p>Man hat einen weiteren Parameter für die Länge des zu beschreibenden Zeichenarrays eingeführt, damit Buffer-Overflows vermieden werden. Also gibt es seit dieser Zeit hier eine gewisse Inkompatibilität, obwohl man ja eigentlich genau das Gegenteil erreichen wollte. 2003 gab es dann eine Überarbeitung des C++ Standards. Nur geht daraus imo nicht eindeutig hervor, welche Signatur denn nun in C++ gültig ist. Dementsprechend unentschlossen werden wohl die Implementierer der Standardbibliothek die Sache handeln. Da anzunehmen ist, dass der aktuelle C++ Standard auch die aktuellen C Funktionen referenziert, werden die meisten C++ Standardbibliotheken vermutlich beide Versionen anbieten, bei der &quot;alten&quot; aber eine entsprechende Warnung bringen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/998205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/998205</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 19 Feb 2006 22:28:57 GMT</pubDate></item><item><title><![CDATA[Reply to wchar_t on Mon, 20 Feb 2006 02:19:54 GMT]]></title><description><![CDATA[<p>Vielen dank, habe ich mal wieder was neues gelernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/998232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/998232</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Mon, 20 Feb 2006 02:19:54 GMT</pubDate></item></channel></rss>