was bedeutet using ::int32_t



  • Hallo, ich habe folgendes in der cstdint.h gefunden und frage mich was das bedeutet.
    Im context steht es dort so:

    namespace std
    {
      using ::int8_t;
      using ::int16_t;
      using ::int32_t;
      using ::int64_t;
    ...
    }
    

    entweder sagt man ja

    using namespace std;
    

    oder

    using std::int8_t
    

    aber da die es in Ihrem eigenen namespace declarieren macht beides ja keinen sinn oder?
    Nach dem neuen standard kann man using ja anstelle von typedef verwenden aber dann muss man doch das = verwenden.
    Und selbst dann wozu sollte man es an der Stelle verwenden verwenden?
    Könnte mir jemand einen Hinweis geben bitte.



  • Die Datentypen kommen aus dem C, wo es keine Namespaces gibt.
    Mit namespace std { using ::int8_t; } packst du die Bezeichner aus dem globalen Bereich ins std-Namespace.



  • also kann man nicht typedef im namespace verwenden um es ins namespace zu holen

    namespace{
    typedef int8_t
    }
    

    geht also nicht?

    Ist es etwas neues oder war es schon immer so möglich using zu benutzen?



  • namespace std { typedef ::uint8_t uint8_t; }
    

    Wäre auch möglich, ist natürlich nicht so "hübsch".

    Gibt es schon länger, das Feature.



  • Ok danke habe verstanden, ich hasse es dass c++ ständig die Schüßenlwörter für mehrere Sachen verwendet. Aber da wird man wohl mit leben müssen. Ist ja auch nicht so einfach ein neues Wort einzuführen wenn man bedenkt wie viel Code es inzwischen gibt.



  • Fox Mulder schrieb:

    Ok danke habe verstanden, ich hasse es dass c++ ständig die Schüßenlwörter für mehrere Sachen verwendet. Aber da wird man wohl mit leben müssen. Ist ja auch nicht so einfach ein neues Wort einzuführen wenn man bedenkt wie viel Code es inzwischen gibt.

    Warum denn? Ist genau die gleiche Verwendung.

    using std::uint8_t im globalen Namespace zieht den Bezeichner in den globalen Namensraum, genau das Beispiel, das du im ersten Post gepostet hast.
    Wenn du using in einem anderen Namenspace verwendest, dann ziehst du den Bezeichner in den aktuellen Namespace. Hier eben vom globalen Namespace in den std Namespace.



  • So schwer ist das nicht zu verstehen.
    Liest halt mal ein gutes Buch drüber.
    Nimm das von Struppi!



  • Wer ist Sruppi?



  • Fox Mulder schrieb:

    Wer ist S**(t)**ruppi?

    https://de.wikipedia.org/wiki/Bjarne_Stroustrup


Log in to reply