Was heißt das c bei cout?



  • WOW, ich bin begeistert!! 👍

    Aber mal im Ernst: Das ist schon eine interessante Flexibilität. Will ich auch gar nicht abstreiten. Wunderbar.
    Aber wozu gibt es Debugger? Wer debuggt denn ernsthaft mit Ausgaben à la "Der Wert von x ist: 5" ?



  • Bisher dachte ich, das steht für char out. Weil es ja auch wcout gibt, welches für wide char out stehen könnte.



  • @otze
    ich würde sagen, es ist eindeutig nicht die lösung zum oben genannten thema.

    da ich define hauptsächlich nicht benutze, kann ich dir bei deiner übersetzung nicht helfen. aber vielleicht findest du ja einen, der genügend zeit dafür hat...

    3. die möglichkeit des präprozessors, code in einer librarie, im falle dass er vom entsprechenden compiler nicht unterstützt wird, einfach auszuklammern und durch eine funktionierende alternative zu ersetzen, ohne dass der benutzer eine zeile code ändern muss, macht ihn unschlagbar

    hat keiner gesagt, dass man einen präprosessor nicht braucht. wie willst du denn sonst dein iostream includieren?? 😉



  • Optimizer schrieb:

    WOW, ich bin begeistert!! 👍

    Aber mal im Ernst: Das ist schon eine interessante Flexibilität. Will ich auch gar nicht abstreiten. Wunderbar.
    Aber wozu gibt es Debugger? Wer debuggt denn ernsthaft mit Ausgaben à la "Der Wert von x ist: 5" ?

    war ja nur ein primitives beispiel 🙂
    aber sowas ähnliches benutz ich, um in einem programm aussagekräftige exception meldungen zu erzeugen, falls mal was schiefgehen sollte.

    @Pendragon welche lösung? ich wollte keine lösung bringen. uch hab nur diese aussage von dir entkräftet:

    define wurde aber nur übernommen, um mit c kopatibel zu bleiben

    da sie schlichtweg falsch ist.
    Und nein,es gibt keine einfache möglichkeit, dass "__LINE__" bzw "__FILE__" makro zu ersetzen, bzw den "#" operator zu umgehen. Für sowas wurde der präprozessor gemacht.



  • otze schrieb:

    war ja nur ein primitives beispiel 🙂
    aber sowas ähnliches benutz ich, um in einem programm aussagekräftige exception meldungen zu erzeugen, falls mal was schiefgehen sollte.

    dafür gibt es in c++ andere möglichkeiten...



  • Pendragon schrieb:

    otze schrieb:

    war ja nur ein primitives beispiel 🙂
    aber sowas ähnliches benutz ich, um in einem programm aussagekräftige exception meldungen zu erzeugen, falls mal was schiefgehen sollte.

    dafür gibt es in c++ andere möglichkeiten...

    ich bin ganz ohr.



  • otze schrieb:

    "#" operator

    😕 😕 😕



  • stringizing token(wurde in verschiedensten quellen als operator benannt-halt ein präprozessoroperator)



  • @MaSTaH:

    Das ist der 'sharp'-operator. Mit ihm ist es möglich, Teile des Codes in C# zu schreiben und direkt native dann in die C++ Quelldatei einzubinden. :p



  • Optimizer schrieb:

    @MaSTaH:

    Das ist der 'sharp'-operator. Mit ihm ist es möglich, Teile des Codes in C# zu schreiben und direkt native dann in die C++ Quelldatei einzubinden. :p

    *g*

    otze schrieb:

    stringizing token(wurde in verschiedensten quellen als operator benannt-halt ein präprozessoroperator)

    Achso, habe noch nie eine Quelle gesehen in der man das als Operator bezeichnet hat.



  • Ah. So wie der ++-Operator es erlaubt, C++-Code in C einzubinden? Mann bin ich heute wieder schlau 🤡



  • MaSTaH schrieb:

    otze schrieb:

    stringizing token(wurde in verschiedensten quellen als operator benannt-halt ein präprozessoroperator)

    Achso, habe noch nie eine Quelle gesehen in der man das als Operator bezeichnet hat.

    hmm ausser meinem buch finde ich aauf die schnelle auch keine quelle mehr...naja, wie würdet ihr es denn nennen?



  • otze schrieb:

    hmm ausser meinem buch finde ich aauf die schnelle auch keine quelle mehr...naja, wie würdet ihr es denn nennen?

    Keine Ahnung. Benutze es zu selten in Gesprächen, als dass ich einen Namen dafür bräuchte 😉 .



  • Von der Verwendung her würde ich es auch als (unären) Operator bezeichnen.
    Das dürfte schon korrekt sein. Was soll es sonst sein?

    @Bashar: korrekt. 🙂



  • c99 draft schrieb:

    6.10.3.2 The # operator



  • Oder ISO C++

    16.3.2 The # operator

    Versteh nicht, warum hier einige so gegen den Präprozessor schiessen. Er ist ja nicht dafür gedacht, den Compiler zu ersetzen, sondern ihn zu unterstützen. Und Sachen wie __FILE__ oder __LINE__ sind gerade für Debugging recht nützlich, und da reicht es nicht sowas einfach in 'ne Funktion zu packen, weil sowas an Ort und Stelle ersetzt werden muss.
    Und ein

    #define DEBUG_LOG(text) debug::log(text, __FILE__, __LINE__)
    

    ist doch da recht praktisch.



  • Ich hab's doch vorhin gesagt, für so etwas gibt es Debugger. Genau sowas ist IMHO einer der vielen Fälle, wo der Präprozessor einfach ausgedient hat und sowas kann ich auch nicht praktisch finden.
    Mich stört ja ein Präprozessor nicht, insbesondere wenn man Unterscheidungen für verschiedene Plattformen einbaut, kann er in C++ durchaus nützlich sein.
    Das der Präprozessor oft im schlechten Licht erscheint, ist doch logisch. Das Übersetzungsmodell in C++ suckt und weil man dafür den Präpro braucht, fällt er in der Gunst schon mal ein ganzes Stück ab.
    Dann sind mal irgendwann Leute auf die Idee gekommen, dass Makros bei schlechten Compilern schneller sind, als gewöhnliche Funktionen. Über Makros vs. Funktionen weißt du sicher bescheid.
    dito Konstanten. Im Grunde sind es nur fehlende Sprachmerkmale gewesen, aber mit dem Präpro hat man immer alles schön workarounden können, ein Wunderwerkzeug. Und wie alles, wird er gehasst, wenn man erstmal was besseres gefunden hat. 😃



  • Sie sterben bloß aber einer gewissen Programmierebene, wer zu lange mit Programmiersprachen auf Lvl4 gespielt hat benötigt keinen Präprozessor mehr. Aber es gibt auch noch Leute die keine Lvl4-Sprachen benützen können, mit dem Präprozessor und nicht mit dem Interpreter Plattformunabhängigkeit erreichen(#ifdef WIN32), etc.

    MfG SideWinder



  • Optimizer schrieb:

    insbesondere wenn man Unterscheidungen für verschiedene Plattformen einbaut, kann er in C++ durchaus nützlich sein.

    Außerdem bestehe ich darauf, dass du zukünftig JIT-Compiler sagst und nicht Interpreter. 😉



  • Wir lernen Java grade in der Schule und jeder ist derart vom Speed überzeugt, dass wir uns auf Interpreter geeinigt haben, JIT-Compiler klingt so furchtbar schnell *g*

    MfG SideWinder


Anmelden zum Antworten