Seite 1 von 1

Feste Typengrößen definieren

Verfasst: Do Mai 14, 2009 5:13 pm
von Dirty Oerti
Tag zusammen :)

Mal eine "dumme" Frage:

Ich möchte "feste Typgrößen" definieren. Also, dass ein int IMMER 4 Byte hat, ein short IMMER 2, ein char IMMER 1 Byte etc.
Wozu: Bei meinem Kernel möchte ich sichergehen, dass auch die richtigen Größen verwendet werden.

Gesehen hab ich das schon öfters.
In vielen anderen (vergleichbaren) Projekten wird mit eigens definierten Typen gearbeitet.

Wie mach ich das?

Und: Ist das Sinnvoll?

MfG
Daniel

Re: Feste Typengrößen definieren

Verfasst: Do Mai 14, 2009 5:23 pm
von cloidnerux
Also, soweit ich weiß sinbd diese "definierten typen" nur solche konstrukte:

Code: Alles auswählen

typedef char sint8;
Soweit ich weiß sind die Typen char, short, long, long long, fest definiert.
Also char = 1Byte
short = 2byte.
...
Jezt kannst du dir für jedes ein typdef machen und hast dann deine typen.
Mir ist nur von int bekannt das es vom sytsem abhänig ist.
Ich hab das mit den typedef bei Aeris impelmentiert(types.h)

Re: Feste Typengrößen definieren

Verfasst: Do Mai 14, 2009 7:25 pm
von fat-lobyte
Dirty Oerti hat geschrieben:Mal eine "dumme" Frage:
Die Frage ist leider nicht so dumm...
Dirty Oerti hat geschrieben:Ich möchte "feste Typgrößen" definieren. Also, dass ein int IMMER 4 Byte hat, ein short IMMER 2, ein char IMMER 1 Byte etc.
Wozu: Bei meinem Kernel möchte ich sichergehen, dass auch die richtigen Größen verwendet werden.
Leider geht das nicht - wie groß ein char, int und short ist und bleibt nunmal compilerabhängig.
Dirty Oerti hat geschrieben:Gesehen hab ich das schon öfters.
In vielen anderen (vergleichbaren) Projekten wird mit eigens definierten Typen gearbeitet.
Das stimmt, mir kommt vor in fast allen Projekten gibts eigene Typedefs.
Dirty Oerti hat geschrieben:Wie mach ich das?
Das wird dir nicht gefallen: du musst für jede Plattform die du unterstützen willst ein #ifdef schreiben dass die Typedefs enthält. In meinem Projekt bin ich der Sache aus dem Weg gegangen, indem ich Boost.Integer verwendet habe. Was die allerdings tun ist genau dasselbe - für jede Plattform eigene typedefs.
Dirty Oerti hat geschrieben:Und: Ist das Sinnvoll?
Überleg dir genau ob die Größe wirklich relevant ist oder ob es nicht vielleicht reicht, wenn es auf diesem System für das du kompilierst gleich bleibt. Du wirst schon deine Gründe haben, also ja es ist Sinnvoll.
Du kannst ja eine Liste mit "unterstützten Plattformen" anlegen, und jede dort verzeichnete Plattform muss ihre Typedefs enthalten.
Oder so... ;-)

Re: Feste Typengrößen definieren

Verfasst: Do Mai 14, 2009 8:03 pm
von Dirty Oerti
fat-lobyte hat geschrieben:Das wird dir nicht gefallen: du musst für jede Plattform die du unterstützen willst ein #ifdef schreiben dass die Typedefs enthält. In meinem Projekt bin ich der Sache aus dem Weg gegangen, indem ich Boost.Integer verwendet habe. Was die allerdings tun ist genau dasselbe - für jede Plattform eigene typedefs.
Hmpf. Hört sich nicht gut an.
Was ich aber denke ich machen werde:

Ich definiere eigene Typen, die zwar (erstmal) nur Ersatznamen für die normalen Typen darstellen, später aber erweitert werden können (um auch abweichende Architekturen zu unterstützen).

Danke auf jedenfall :)