Gast
#2340638
Hallo, wie kann man Elemente aus einem Struct in ein Array kopieren? z.B.:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
Geht das auch eleganter, z.B. mit memcopy oder so? Grüße
|
Anzeige
|
Structelemente in Array kopieren
Gast
#2340638
Hallo, wie kann man Elemente aus einem Struct in ein Array kopieren? z.B.:
Geht das auch eleganter, z.B. mit memcopy oder so? Grüße memcpy heißt die Funktion. Allerdings sollte man dabei wissen, was man tut. In deinem Beispiel geht es gut, aber je nach struct steht es dem Compiler frei zwischen den Elementen der struct Füllbytes einzubauen (um z.B. nach einem char das nächste int-Element auf einer geraden Adresse beginnen zu lassen). Das muß man natürlich im Blick behalten.
Gast
#2340654
Klaus Wachtler schrieb: > Allerdings sollte man dabei wissen, was man tut. > In deinem Beispiel geht es gut, aber je nach struct steht es dem > Compiler frei zwischen den Elementen der struct Füllbytes einzubauen (um > z.B. nach einem char das nächste int-Element auf einer geraden Adresse > beginnen zu lassen). Das muß man natürlich im Blick behalten. Wenn alle Elemente von gleichen Typ sind, macht der Compiler das dann auch? Ansonsten muss man wohl mit volatile herumspielen? Viele Grüße Mit volatile hat das überhaupt nichts zu tun. Martin H. schrieb: > Wenn alle Elemente von gleichen Typ sind, macht der Compiler das dann > auch? Insbesondere, wenn alles gleiche Typen sind, wird es kaum Probleme geben.
Gast
#2340728
Vielen Dank Klaus! Das funktioniert hervorragend (bis zur Optimierungsstufe 4). Aber mehr benötige ich nicht, wer weiß was der Compiler da fabriziert! Viele Grüße Meinst du bei 99 wird noch besserer Code rauskommenß Bei welchem Compiler denn? Abgesehen davon sehe ich da kein Problem bzgl. Optimierung. Martin H. schrieb: > Wenn alle Elemente von gleichen Typ sind, macht der Compiler das dann > auch? Unter Umständen ja, wenn zB dieser Typ schräge größe hat (zB gepackte Struktur mit 3 Bytes). > Ansonsten muss man wohl mit volatile herumspielen? Nein. volatile ändert nichts am Strukturlayout.
Gast
#2341005
Klaus Wachtler schrieb: > Insbesondere, wenn alles gleiche Typen sind, wird es kaum Probleme > geben. Hervorragender Hinweis für sauberen, portablen C-Code. MfG Klaus
Gast
#2341035
Schau mal hier: http://en.wikipedia.org/wiki/Data_structure_alignment#Typical_alignment_of_C_structs_on_x86 Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|