Frage: Handhabung von Konsolenausgaben (Defacto-Standards, übliche Vorgehensweisen...)



  • Morgen zusammen,

    ich hätte aus gegebenem Anlass mal eine Frage bzgl. der üblichen Handhabung von
    Konsolenausgaben (dem "stdout/cout"-Komplex).

    Ich habe eine formatierte Konsolenausgabe, bei der bestimmte Formate zwingend vorgeschrieben sind (so sollen beispielsweise Zahlen niemals in wissenschaftlicher Notation ausgegeben werden).

    Dementsprechend habe ich bisher mit setw, fixed und Konsorten meinen Ausgabestrom auf bestimmte Formate festgelegt.

    z.B. "cout << fixed << ends;"

    Nun hat ein externer Mitarbeiter, der eine deutlich größere Erfahrung in der Softwareentwicklung mit C++ hat, einen Kommentar am ersten Vorkommen angebracht:
    "Wo zieht der sich das fixed her?" und "#define fixed 1L" in den Header aufgenommen.

    Meine Frage daher: Ist fixed nicht Bestandteil des C++-Standards, und wenn nicht, was setze ich stattdessen ein?

    Wenn es Teil des Standards ist, warum schmiert der VC++-Compiler auf seinem PC ab, auf meinem jedoch nicht? (Gleicher Quellcode, gleiche Version von VStudio).

    Im gleichen Zusammenhang: Wie sieht es mit width, bzw. setw und der Einstellung der Präzision von Fließkommazahlen aus?

    Danke für die Hilfe: Ich bin etwas verwirrt, weil ich "fixed" und co. bisher als Teil der standardisierten C++ Standard Library verstanden hatte.

    Gruss
    Sid



  • Hallo,

    Meine Frage daher: Ist fixed nicht Bestandteil des C++-Standards, und wenn nicht, was setze ich stattdessen ein?

    Es ist bestandteil des C++ Standards: http://www.cppreference.com/io_flags.html#format_flags

    Sag deinem Kollegen, er soll das define rausschmeißen.

    MfG

    GPC



  • Und width bzw. setw() sind genauso Teil des Standards (wobei du für letzteres noch ein "#include <iomanip>" benötigst).

    PS: und ein "#define fixed 1L" ist - kurz gesagt - Humbug. Frag deinen Kollegen doch mal, mit was für einer Fehlermeldung sich sein Compiler meldet.



  • Gut zu wissen.

    Möglicherweise liegt die Fehlerursache anderswo. Ich werde das mal ansprechen, wenn er das nächste Mal da ist.

    Danke für das Feedback, ich war echt ziemlich verwirrt 🙂

    Normalerweise hätte ich ganz souverän reagiert, aber er hat wirklich jede Menge Ahnung (quasi Wizard-Level). Vielleicht bestand für ihn einfach noch nie die Notwendigkeit, sowas zu schreiben.

    Gruss
    Sid



  • Ich glaube du überschätzt deinen Kollegen gewaltig.



  • Sid2K6 schrieb:

    Nun hat ein externer Mitarbeiter, der eine deutlich größere Erfahrung in der Softwareentwicklung mit C++ hat, einen Kommentar am ersten Vorkommen angebracht:
    "Wo zieht der sich das fixed her?" und "#define fixed 1L" in den Header aufgenommen.

    das ist ein klassiker. mit so kollegen hab ich auch zu tun.
    der alte programmiert seit 25 jahren, davon seit 15 jahren C. C++ hat er nie gerafft, erzählt aber jedem, wie toll er doch darin sei. schau dir nichts von ihm ab. bereits das #define statt long const (oder const long) sollte eindeutig sein, um ihn zu enttarnen.


Log in to reply