Forum: PC-Programmierung pragma wie zustandsautomat?


von Sina A. (sinapse)


Lesenswert?

hallo,

kurze frage...

bei
1
#pragma pack(1)
2
struct1.. 
3
4
struct2..

bezieht sich das pack auf beide strukturen, weil sich der compiler das 
pack merkt (wie bei einem zustandsautomaten eben)... oder gilt das 
packen jetzt nur für struct1... also der nächsten struktur ?

in C natuerlich

danke

von Karl H. (kbuchegg)


Lesenswert?

da musst du in deiner Compiler-Doku nachsehen.

Praktisch alles rund um Pragmas ist Compiler-spezifisch.
Das einzige was standardisiert ist, ist das ein Compiler ein #pragma das 
er nicht kennt stillschweigend ignoriert.

von Sina A. (sinapse)


Lesenswert?

grmpf... das ist das ding von keil... da finde ich nur was über pragma 
befehle aber nicht über das grundlegende verhalten (ob zustandsautomat 
oder nicht)...

von Robert L. (lrlr)


Lesenswert?

was zum .. hat das mit einem "zustandsautomat" zu tun..
aber egal

gehts um das:

http://www.keil.com/support/man/docs/c166/c166_pack.htm

laut dem beispiel dort, ist es solange aktiv, bis ein neuen #pragma pack 
kommte

(ICH kenne das auch nicht anders, von keiner anderen programmiersprache 
und auch von keiner anderen compilerdirektive...)

von Peter II (Gast)


Lesenswert?

Robert L. schrieb:
> laut dem beispiel dort, ist es solange aktiv, bis ein neuen #pragma pack
> kommte
> (ICH kenne das auch nicht anders, von keiner anderen programmiersprache
> und auch von keiner anderen compilerdirektive...)

gilt es dann aber nur für eine Datei oder die Gesamte 
übersetzungseinheit?

Was ist wenn nach dem #pragma ein include kommt? Das hätte schöne 
auswirkungen wenn in verschiendne Übersetzungseinheiten die Structs eine 
andere größe haben.

von Sesk K. (zeborok)


Lesenswert?

So wie es sich dort liest gilt das bis zum nächsten pack(..) bzw. in 
diesem Fall bis zum Zurücksetzen mit #pragma pack() ...

von Robert L. (lrlr)


Lesenswert?

>Was ist wenn nach dem #pragma ein include kommt?

keine Ahnung (ich mag C u.A. deshalb nicht ;-) , wegen der 
"texteditor-ähnlichen" Mentalität von makros/includes usw.

soweit ich weiß, ist ein include "nur" ein dummes hinzufügen von text..

das #pragma sollte/würde also auch im (gesamten) include gelten
(wenn dort drinnen nicht auch ein #pragma pack() steht)

ICH mache (deshalb) die Byte-ausrichtung nur für sachen wo es unbedingt 
notwendig ist,
(also z.b. von extern daten kommen, in diesem format..)
also so wie im beispiel, nur genau für eine struct..

von mar IO (Gast)


Lesenswert?

Kenn zwar #pragma pack() nicht, aber vllt. hilft dir das weiter:

http://openbook.galileocomputing.de/c_von_a_bis_z/015_c_strukturen_012.htm

Ich glaube, das gilt nur für die nächste Struct / Union, bin mir aber 
ned sicher.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.