<?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[Komischer(?) Parameter in C-Funktion...]]></title><description><![CDATA[<p>Hallo zusammen, jetzt hab ich mal ein ganz dumme Frage (mhr oder weniger). Jeder kennt die Funktion fwrite(...). Nun hab ich mir die Funktionsprototypen mal aus interesse angeschaut, da mich interessiert hat wie fwrite mit einen void* buffer unbestimmter größe umgeht. Denn irgendwo muß er es ja herwissen, sonst könnte er ja den buffer nicht schreiben. Nunja, mal der Funktionskopf:</p>
<pre><code class="language-cpp">_CRTIMP __checkReturn_opt size_t __cdecl fwrite(__in_ecount(_Size*_Count) const void * _Str, __in size_t _Size, __in size_t _Count, __inout FILE * _File);
</code></pre>
<p>Und meine Frage dazu: Wieso darf?/ wird vor const void *_Str noch eine Funktion aufgerufen [__in_ecount(_Size*_Count)]? Das ist doch eigentlich nicht zulässig, oder?<br />
Und wie kann man selbst die größe des/eines void *buffers herausbekommen?</p>
<p>Danke für eure Antworten bzw Hilfe =))</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160834/komischer-parameter-in-c-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 10:43:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160834.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Sep 2006 20:40:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komischer(?) Parameter in C-Funktion... on Fri, 29 Sep 2006 20:40:53 GMT]]></title><description><![CDATA[<p>Hallo zusammen, jetzt hab ich mal ein ganz dumme Frage (mhr oder weniger). Jeder kennt die Funktion fwrite(...). Nun hab ich mir die Funktionsprototypen mal aus interesse angeschaut, da mich interessiert hat wie fwrite mit einen void* buffer unbestimmter größe umgeht. Denn irgendwo muß er es ja herwissen, sonst könnte er ja den buffer nicht schreiben. Nunja, mal der Funktionskopf:</p>
<pre><code class="language-cpp">_CRTIMP __checkReturn_opt size_t __cdecl fwrite(__in_ecount(_Size*_Count) const void * _Str, __in size_t _Size, __in size_t _Count, __inout FILE * _File);
</code></pre>
<p>Und meine Frage dazu: Wieso darf?/ wird vor const void *_Str noch eine Funktion aufgerufen [__in_ecount(_Size*_Count)]? Das ist doch eigentlich nicht zulässig, oder?<br />
Und wie kann man selbst die größe des/eines void *buffers herausbekommen?</p>
<p>Danke für eure Antworten bzw Hilfe =))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146796</guid><dc:creator><![CDATA[VirtualDreams]]></dc:creator><pubDate>Fri, 29 Sep 2006 20:40:53 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer(?) Parameter in C-Funktion... on Fri, 29 Sep 2006 21:21:29 GMT]]></title><description><![CDATA[<p>__in_ecount ist ein Makro, keine Funktion <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>Und die Größenangaben des Buffers musst du ja beim Aufruf als Parameter übergeben, die findet fwrite nicht selbst raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146808</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Fri, 29 Sep 2006 21:21:29 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer(?) Parameter in C-Funktion... on Fri, 29 Sep 2006 22:06:45 GMT]]></title><description><![CDATA[<p>Aber wieso kann ich zB eien string von 25 zeichen übergeben und trotzdem 256 Byte als count übergeben ohne das was passiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146812</guid><dc:creator><![CDATA[VirtualDreams]]></dc:creator><pubDate>Fri, 29 Sep 2006 22:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer(?) Parameter in C-Funktion... on Fri, 29 Sep 2006 22:31:56 GMT]]></title><description><![CDATA[<p>Wenn nichts passiert, wäre das reiner Zufall. Sowas nennt man undefiniertes Verhalten, es kann also _alles_ passieren. Daher solltest du schon selbst darauf achten, korrekte Argumente zu übergeben, weil ein Programm mit undefiniertem Verhalten ein kaputtes Programm ist.<br />
Da ich deinen konkreten Fall nicht kenne, kann es aber auch sein, dass dein String zwar nur 25 Zeichen lang ist, dieser sich aber in einem definierten Bereich von 256 möglichen Zeichen befindet. Das wäre dann ok, auch wenn der Müll hinter dem String ebenfalls in der Datei landen würde. Hier ist dann eher ein logischer Fehler zu beheben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146821</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 29 Sep 2006 22:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer(?) Parameter in C-Funktion... on Sat, 30 Sep 2006 07:44:22 GMT]]></title><description><![CDATA[<p>ja, der string buffer ist zb 256 groß und als count übergeb ich auch 256, das wäre auch soweit ok, trotzdem landen am ende dann zb bloß 25 zeichen in der datei wenn nur 25 zeichen im string stehen. vlt fragt er ja intern nach dem \0 nach? bei int-buffern stell ich mir schon vor das man es genau angeben muß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146869</guid><dc:creator><![CDATA[VirtualDreams]]></dc:creator><pubDate>Sat, 30 Sep 2006 07:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer(?) Parameter in C-Funktion... on Sun, 01 Oct 2006 01:45:05 GMT]]></title><description><![CDATA[<p>fwrite sollte schon alles schreiben. Hast du mal geprüft, ob beim Schreiben ein Fehler aufgetreten ist? ferror sollte dabei helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147262</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 01 Oct 2006 01:45:05 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer(?) Parameter in C-Funktion... on Sun, 01 Oct 2006 09:03:25 GMT]]></title><description><![CDATA[<p>Stimmt, habs gestern probiet und er schreibt tatsächlich den ganzen Buffer. So kann man sich täuschen... Fehler gibts keine ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147297</guid><dc:creator><![CDATA[VirtualDreams]]></dc:creator><pubDate>Sun, 01 Oct 2006 09:03:25 GMT</pubDate></item></channel></rss>