<?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[Struct auslesen]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Habe ein folgendes Struct</p>
<pre><code class="language-cpp">struct foo {
  int a;
  int b;
  char c[128];
  long d;
};
</code></pre>
<p>Und nun wollte ich fragen ob ich einfach per memcopy das wie folgt machen kann.</p>
<pre><code class="language-cpp">struct foo X;
// X irgendwie befüllen
char Y[sizeof (struct foo)]

memcopy ( Y, &amp;X, sizeof ( struct foo ) );
</code></pre>
<p>Und das was ich nun im Y habe würde ich gerne über eine Pipe oder über ein Socket irgend wo hin schicken, und dort wieder per memcopy zusammensetzen. Dort wäre halt genau solch ein Struct vorhanden.</p>
<p>Wäre sowas legitim oder sollte man die Finger von sowas lassen weil es Probleme bei verschiedenen Compilern bzw Betriebssystemen gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307071/struct-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 17:34:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307071.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Aug 2012 22:22:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struct auslesen on Wed, 15 Aug 2012 22:22:04 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Habe ein folgendes Struct</p>
<pre><code class="language-cpp">struct foo {
  int a;
  int b;
  char c[128];
  long d;
};
</code></pre>
<p>Und nun wollte ich fragen ob ich einfach per memcopy das wie folgt machen kann.</p>
<pre><code class="language-cpp">struct foo X;
// X irgendwie befüllen
char Y[sizeof (struct foo)]

memcopy ( Y, &amp;X, sizeof ( struct foo ) );
</code></pre>
<p>Und das was ich nun im Y habe würde ich gerne über eine Pipe oder über ein Socket irgend wo hin schicken, und dort wieder per memcopy zusammensetzen. Dort wäre halt genau solch ein Struct vorhanden.</p>
<p>Wäre sowas legitim oder sollte man die Finger von sowas lassen weil es Probleme bei verschiedenen Compilern bzw Betriebssystemen gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242254</guid><dc:creator><![CDATA[Slux]]></dc:creator><pubDate>Wed, 15 Aug 2012 22:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to Struct auslesen on Wed, 15 Aug 2012 22:32:33 GMT]]></title><description><![CDATA[<p>Auf einem einzigen System, innerhalb der gleichen Exe ist das absolut ok. Aber wenn du es an wer weiß was für eine Maschine schickt mit wer weiß was für einer Architektur, mit einer Exe, die von einem Compiler mit wer weiß was für Einstellungen erstellt wurde: Nein, das kann schiefgehen. Muss aber nicht. Vielleicht weißt du ja, dass in beiden Exen die Datentypen gleiche Breite haben, gleiche gepackt sind und die gleiche Byteordnung haben. Das ist nämlich durchaus öfters gegeben. Dann funktioniert auch das byteweise kopieren.</p>
<p>Falls diese Annahmen nicht gegeben sind, dann ist das Stichwort <em>Serialization</em>. Davon gibt es verschiedene Szenarien, je nachdem wie Effizient oder Aufwändig es sein darf oder wie verschieden die Systeme sein können. Eine (ineffiziente) Simpelmethode wäre, die Daten in menschenlesbarer Form zu verschicken. Menschenlesbare Formate sind auch gut zur Fehlerbehandlung und zum Speichern von Daten, sind aber nicht so toll, wenn es um Performance geht.</p>
<p>Warum eigentlich das temporäre Array, anstatt das Struct direkt zu verschicken bzw. hinein zu schreiben? Der memcpy-Schritt ist doch gar nicht nötig!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242259</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 15 Aug 2012 22:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to Struct auslesen on Wed, 15 Aug 2012 22:38:28 GMT]]></title><description><![CDATA[<p>Danke SeppJ,</p>
<p>hast recht, hatte den Gedanken, dass ich konkret nur ein char-array verschicken kann weil die Funktion das schluckt, aber ich kann es ja einfach casten und gut ist.</p>
<p>Ansonsten danke für die anderen Informationen und Tipps &amp; Schönen Abend noch. <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/2242264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242264</guid><dc:creator><![CDATA[Slux]]></dc:creator><pubDate>Wed, 15 Aug 2012 22:38:28 GMT</pubDate></item></channel></rss>