The Daily WTF



  • Das nennt sich: Gekennzeichneter Boolescher Ausdruck.

    Das nennt sich WTF oder Trollversuch.



  • lol

    #ifndef _IPProcess_h_
    #define _IPProcess_h_
    
    #undef private
    #define private public
    #include 
    class IP_MTProcess : public MTProcess
    {
    public:
    	IP_MTProcess(pfnDoubleStatic func, void* arg1) : MTProcess(func, arg1, NULL) {}
    	~IP_MTProcess()	{ CloseHandle(_tid); }
    };
    #undef private
    #define private private
    
    #endif // _IPProcess_h_
    


  • Optimizer schrieb:

    Power Off schrieb:

    Ausserdem fallen Fehler wie

    bool garbageCan = blockHead() = 0; // Fehler?
    

    dann sofort auf:

    Mir fallen Compiler-Fehler eigentlich immer auf.

    Wenn Du mehr Ahnung haettest, wuerdest Du nicht so einen Quark schreiben!

    int boink;
    int& blockHead( void ) { return boink; }
    bool garbageCan = blockHead() = 0;  // ist Compiler egal
    

    😃



  • Power Off schrieb:

    Optimizer schrieb:

    Power Off schrieb:

    Ausserdem fallen Fehler wie

    bool garbageCan = blockHead() = 0; // Fehler?
    

    dann sofort auf:

    Mir fallen Compiler-Fehler eigentlich immer auf.

    Wenn Du mehr Ahnung haettest, wuerdest Du nicht so einen Quark schreiben!

    int boink;
    int& blockHead( void ) { return boink; }
    bool garbageCan = blockHead() = 0;  // ist Compiler egal
    

    😃

    Don't feed the troll.

    Bye, TGGC



  • Apropos Quark: Wofür war das void in den Klammern gleich noch da?



  • Power Off schrieb:

    int boink;
    int& blockHead( void ) { return boink; }
    bool garbageCan = blockHead() = 0;  // ist Compiler egal
    

    aber das schreibt niemand.

    bool garbageCan = blockHead();
    

    oder

    bool garbageCan = !blockHead();
    

    also muß auch keiner Gekennzeichneten Müll benutzen.



  • Walli schrieb:

    Apropos Quark: Wofür war das void in den Klammern gleich noch da?

    In ANSI C++ besagt es, dass eine Funktion keine Parameter hat. Stelle im Standard kannst Dir selber raussuchen. 🙄



  • Power Off schrieb:

    Optimizer schrieb:

    Power Off schrieb:

    Ausserdem fallen Fehler wie

    bool garbageCan = blockHead() = 0; // Fehler?
    

    dann sofort auf:

    Mir fallen Compiler-Fehler eigentlich immer auf.

    Wenn Du mehr Ahnung haettest, wuerdest Du nicht so einen Quark schreiben!

    int boink;
    int& blockHead( void ) { return boink; }
    bool garbageCan = blockHead() = 0;  // ist Compiler egal
    

    😃

    Ich bin stolz auf dich, mein Sohn. Wenn ich dir noch einen Tipp geben darf: du könntest auch ne Klasse benutzen und den operator() überladen. Dann wird dein Code endgültig noch lesbarer.



  • volkard schrieb:

    aber das schreibt niemand.

    Das sagst Du. Tippfehler macht jeder mal, und dann findet er se nimmer.

    Haette er einen gekennzeichneten Booleschen Ausdruck verwendet, waere ihm spaetens beim Tippen des "?" oder beim Lesen spaeter aufgefallen, dass da "=" statt "==" steht.

    EDIT: In Java wurde das Problem uebrigens dadurch elegant geloest, dass "if" z.B. grundsaetzlich nur boolesche Ausdruecke akzeptiert.



  • Power Off schrieb:

    Walli schrieb:

    Apropos Quark: Wofür war das void in den Klammern gleich noch da?

    In ANSI C++ besagt es, dass eine Funktion keine Parameter hat. Stelle im Standard kannst Dir selber raussuchen. 🙄

    ist das die sprache, in der man

    int& blockHead( void ) { return boink; }
    

    schreiben kann?
    warum benutzt du ANSI C++ und nicht DIN C++ wie die ganzen anderen?
    und warum schreibste nicht einfach

    int& blockHead() { return boink; }
    

    also warum das void?



  • Power Off schrieb:

    Das sagst Du. Tippfehler macht jeder mal, und dann findet er se nimmer.

    aber es ist doch unfug, code zu bauen, der tippfehler vermeidet, die man nicht machen würde, wenn man nicht den tippfehlervermeidenden code bauen müßte.

    Power Off schrieb:

    Haette er einen gekennzeichneten Müll verwendet, waere ihm spaetens beim Tippen des "?" oder beim Lesen spaeter aufgefallen, dass da "=" statt "==" steht.

    in den rechten teil einer initialisierung schreibt man keine vergleichsoperatoren rein, tue ich wenigstens nicht.



  • volkard schrieb:

    Power Off schrieb:

    Walli schrieb:

    Apropos Quark: Wofür war das void in den Klammern gleich noch da?

    In ANSI C++ besagt es, dass eine Funktion keine Parameter hat. Stelle im Standard kannst Dir selber raussuchen. 🙄

    ist das die sprache, in der man

    int& blockHead( void ) { return boink; }
    

    schreiben kann?
    warum benutzt du ANSI C++ und nicht DIN C++ wie die ganzen anderen?
    und warum schreibste nicht einfach

    int& blockHead() { return boink; }
    

    also warum das void?

    ANSI/ISO/DIN/BS C++ : alles dasselbe.

    volkard schrieb:

    also warum das void?

    Weil's im Standard eingefuehrt wurde, damit niemand mehr leere Parameterlisten ohne "void" schreibt.



  • volkard schrieb:

    in den rechten teil einer initialisierung schreibt man keine vergleichsoperatoren rein, tue ich wenigstens nicht.

    Hm.



  • Weil's im Standard eingefuehrt wurde, damit niemand mehr leere Parameterlisten ohne "void" schreibt.

    Nope. Ganz im Gegenteil musste man in C void reinschreiben, andernfalls war es eine variable Anzahl von Parametern. In C++ wird dies jetzt anders gehandhabt, damit foo() eine sinnvolle Bedeutung, nämlich keine Parameter hat. Wär sonst ein bisschen affig void hinschreiben zu müssen. foo(int) heißt ein Parameter, foo(bool) heißt ein Parameter, foo(string) heißt ein Parameter, foo(void*) heißt ein Parameter, foo(void) heißt 0 Parameter *Kopfschuss*.



  • Mit TomasRiker haben wir es hier aber nicht zum erneuten Male zu tun, oder?

    MfG SideWinder



  • Optimizer schrieb:

    In C++ wird dies jetzt anders gehandhabt, damit foo() eine sinnvolle Bedeutung, nämlich keine Parameter hat. Wär sonst ein bisschen affig void hinschreiben zu müssen. foo(int) heißt ein Parameter, foo(bool) heißt ein Parameter, foo(string) heißt ein Parameter, foo(void*) heißt ein Parameter, foo(void) heißt 0 Parameter *Kopfschuss*.

    Du bist auf dem Holzweg. In C++ wurde zuerst "foo()" geschrieben, heute "foo(void)". Damit ist man dem ANSI C Standard gefolgt.



  • volkard schrieb:

    in den rechten teil einer initialisierung schreibt man keine vergleichsoperatoren rein, tue ich wenigstens nicht.

    Ich finde, dass man so extrem nicht sein muss. Sowas wie

    bool kannSpäterVertauschtWerden = (a > b)
    

    ist doch völlig in Ordnung. Auch ein == finde ich in Ordnung, man braucht sich natürlich nicht mit geschachtelten ?: zu verkünsteln.



  • Power Off schrieb:

    ANSI/ISO/DIN/BS C++ : alles dasselbe.

    dann isses ja klasse, uns mit nem amerikanischen standard zu beeindrucken. wie heißt das auf indisch?

    volkard schrieb:

    also warum das void?

    Weil's im Standard eingefuehrt wurde, damit niemand mehr leere Parameterlisten ohne "void" schreibt.

    lies doch mal mehr über c++ und halt die klappe solang. dieses void ist so nutzlos wie deine Gegennzeichneten Tricks.



  • @volkard:

    Lies mal im C++ Standard:

    ISO 14882:2003 Chapter 8.3.5 Section 2 schrieb:

    The parameter list (void) is equivalent to the empty parameter list.

    Warum, meinst Du, steht das da wohl drin?



  • Es ist ja auch so, bestreitet ja niemand. Der Punkt ist: Man kann es genausogut auch nicht schreiben und das hat sich nicht nur eingebürgert sondern ist auch logischer.

    MfG SideWinder


Anmelden zum Antworten