C++ Weitergabe von Array an andere Funktionen

Der C++-Standard legt noch nicht mal fest wieviel Bit ein Byte hat. ;) (siehe ANSI ISO 14882, 1.7)

In der Tat macht der C++ Standard aber ein Zugeständnis: Ein int sollte so groß sein wie die Größe eines Datenwortes der zugrundeliegenden Architektur.


Also Plattformen:
Tru64 auf DEC-Alpha
SunOS auf Ultra-Sparc
jegliche Mobil/Embedded-Systeme
Windows/Linux auf Itanium
Windows/Linux auf x64
MS DOS auf x86

Wie gesagt, selbst auf einem normalen 32Bit Heim-PC kannst du den g++ unter Linux z.B. so konfigurieren, dass long double 96 oder 128 Bit groß ist. Es muss nicht mal die Plattform oder der Compiler wechseln, ein paar Schalter tun es auch schon, um die Größen fundamentaler Typen zu ändern.

Wenn du tatsächlich irgendwann mal einen Typ mit einer ganz bestimmten Größe brauchen solltest, dann benutz typedefs, die dir Systembibliotheken der entsprechenden Plattform mitbringen oder irgendwelche Metatemplatekonstrukte, die den passenden Typ in der gewünschten Größe zur Compilezeit auswählen. IIRC hat boost was dafür.
 
Macht ja nix. :) Leider Gottes wird das auch immernoch falsch gelehrt und Schulen/Unis und in diversen Fachbüchern.

Natürlich ist in der Praxis nicht alles so völlig frei und unspezifisch wie es im Standard steht, da bestimmte Bindungen an die Hardware im Regelfall schon da sind und bestimmte Typgrößen auf allen halbwegs aktuellen 32-Bit Heim-PCs nahezu identisch sind. Der Standard beschreibt nunmal einfach keine konkrete Hardware sondern eine abstrakte Maschine. Muss er auch, damit C++ auf jeder Plattform implementiert werden kann. Trotzdem sollte man sich eben darüber bewusst sein, dass sowas variieren kann, darf, soll und muss.
 
Zuletzt bearbeitet:
Zurück
Oben