Größe von datentypen



  • Gibt es in C++ Datentypen mit fester größe? In C gibt es das nicht weshalb mit C99 neue datentypen eingeführt worden sind:

    uint8_t
    uint16_t
    uint32_t
    uint64_t
    

    Wie kann ich diese datentypen in C++ nachbauen? Das einfachste was mir einfällt wäre entweder die typen aus dem C-header zu verwenden oder typedefs die für jede architekur anders gesetzt werden.

    #ifdef X86
    typedef uint32_t unsigned int;
    

    Wie würdet ihr das machen?



  • Ich kenne mich mit C überhaupt nicht aus. Aber sind die uint8_t usw. wirklich _neue_ build-in types? Sind es nicht vielleicht auch typedefs?

    In C++ kannst du doch locker die für dich nützlichen Typen selbst definieren, per typedefs. Und mit dem #ifdef ist das ja auch nicht falsch. Dann muß halt für jeden Build auf jeder Platform ein Makro definiert sein. FÜr Windows32-Platformen ist z.B. WIN32 schon von MSVC vorgegeben. Die Typen ändern sich auch nicht, selbst unter 64bit Windows sind die Bitbreiten gleich geblieben.

    Ansonst kannst du auch Boosts Integer Library verwenden, dann ist schon alles fertig und brauchst es nur noch benutzen:
    http://www.boost.org/libs/integer/index.html

    Achja, mir fällt noch was ein: im C++ Header <limits> könnten auch ein paar nette Sachen drin stehen. 😉



  • danke, das http://www.boost.org/boost/cstdint.hpp ist genau das was ich gesucht habe!


Anmelden zum Antworten