Feste Typengrößen definieren

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Feste Typengrößen definieren

Beitrag von Dirty Oerti » Do Mai 14, 2009 5:13 pm

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
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Feste Typengrößen definieren

Beitrag von cloidnerux » Do Mai 14, 2009 5:23 pm

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)
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Feste Typengrößen definieren

Beitrag von fat-lobyte » Do Mai 14, 2009 7:25 pm

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... ;-)
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Feste Typengrößen definieren

Beitrag von Dirty Oerti » Do Mai 14, 2009 8:03 pm

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 :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten