Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

WhiteMike

Alter Hase

  • »WhiteMike« ist der Autor dieses Themas

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

1

25.06.2007, 12:38

pragma pack und push

*Anmerkung von koschka:
Der Thread bezieht sich auf WinSock: Structuren senden

Zitat von »"David Scherfgen"«


Ein #pragma pack(1) kann auch nicht schaden.


Könnte ich kurz zwischendurch fragen, wie und wozu diese

C-/C++-Quelltext

1
2
#pragma pack()
#pragma push() // Stimmt, danke -.-


und ähnliches benutzt wird. In der TriBase-Engine kommen sie ja sehr, sehr häufig vor, aber nach mehrmaligem Nachschlagen in der Microsoft IDE hab ich immer noch nicht verstanden, wozu sie da sind. Sorry guys -.-

Mit freundlichen Grüßen,
WhiteMike

2

25.06.2007, 12:57

http://www.pronix.de/pronix-775.html

http://www.pronix.de/pronix-721.html

vielleicht hilft dir das weiter...

#pragma puch() sagt mir nichts

mfg Triac

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

25.06.2007, 12:58

ich glaube das heisst pragma push... ;), .... Wenn ja dann WihteMike, schick mir mal ne pn damit ich Titel umändern kann.

http://msdn2.microsoft.com/en-us/library/d9x1s805.aspx

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

25.06.2007, 13:03

Den Titel kann er auch selbst ändern ...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

25.06.2007, 13:30

#pragma Pack wird verwendet um die Speicherausrichtung innerhalb eines Objekts festzulegen. Praktisch ist das zum Beispiel auch wenn man POD Typen direkt per Stream in eine Datei schreiben (oder aus der Datei lesen) will, da Paddingbytes hier nur Compilerabhängige unnötige Last darstellen.

Noch ein Paar Beispiele:

Ein Byte Speicherausrichtung (keine Paddingbytes):

C-/C++-Quelltext

1
#pragma pack( 1 )


Alten Wert auf Stack pushen und anschließend wieder herstellen.

C-/C++-Quelltext

1
2
3
#pragma pack( push, 2 )
// ...

#pragma pack( pop )


Ausrichtung bestimmen und später den Defaultwert aktivieren

C-/C++-Quelltext

1
2
3
#pragma pack( 16 )
// ...

#pragma pack()
@D13_Dreinig

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

6

25.06.2007, 16:16

Was sind POD typen?
und wie ist das eigentlich mit den streams? oO


Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

25.06.2007, 17:26

Siehe: http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html
@D13_Dreinig

LagRange

Frischling

Beiträge: 26

Wohnort: dzt. Aalborg, DK

Beruf: Student

  • Private Nachricht senden

8

25.06.2007, 20:46

All diese #pragma Direktiven sind nur für den MS Compiler, oder?
Science is common sense applied to evidence.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

25.06.2007, 20:48

Mit großer Wahrscheinlichkeit. :-) #pragma selbst ist zwar Standard, aber diese Direktiven sind Microsoft spezifisch.
@D13_Dreinig

Werbeanzeige