Werden Datentypen wegoptimiert und kann es da zu problemen kommen?!
-
Hallo,
ich habe grade erfahren, dass ein Datentyp in C++ nicht unbedingt eine feste Größe haben muss, sondern der vom Compilertyp abhängen kann (Datentypoptimierung).
Mir wurde gesagt dass deshalb so etwas wie #define als Fehlercode zu vermeiden ist und stattdessen am besten in einer union oder einer enum die Datentypen und die Bittiefe festgelegt werden sollte.
Kann mir mal jemand schreiben wie das genau gehen soll, was man beachten muss und ob das ganze so wie ich es grade dargestellt habe überhaupt sitmmt?!
Ich dachte eigendlich immer das ein int eine feste Größe von 4 Bytes und zum Beispiel ein Double von 8 Byte hat und bin etwas verwundert.
Gruß Sebastian
-
Die größe der Datentypen hängt von der verwendeten Plattform ab.
Unter gängigen 32Bit Systemen wie Windows und Linux hat ein int 4 Byte (32 Bit) - unter Windows 3 (welches ja 16 Bit hatte) war ein int nur 2 Byte groß.
Mittels sizeof() lässt sich die Größe abfragen. Die anderen Fragen von dir, habe ich nicht ganz verstanden. Kannst du das etwas besser erklären?
-
Also mein Problem ist, dass ich unter Visual Studio und Windows XP arbeite. Ich verwende eine statische bibliothek und zwar kann ich diese nicht debuggen, was heisst wenn ich in den source gehe bekomm ich keine Debuginformationen. Wenn ich meine Datentypen daraus aufrufe (beziehungsweise Objekte von Klassen mache, wird code nicht ausgeführt.
Ich finde das sehr merkwürdig und habe einmal nachgefragt. Für meine Rückgabewerte nehme ich einfache Makros über #define. Mir wurde erklärt, dass dies ungünstig ist und das solche Fehlercodes besser über enums definiuert werden sollte, in welcher die Bittiefe auch als ein Auszählungselement vorkommt. Somit wäre es gewähleitet dass der Compiler sich nicht irgendwas zusammenfuscht.
Ich wollte wissen ob das so stimmt und was ich zu meinem Problem tun kann.
Gruß Para
-
Ich glaube nicht, dass da irgendein Problem besteht, aber dir wurde richtig geraten, #define sollte man nicht für Konstanten oder Makros benutzen.
MfG Eisflamme