Was mich bei Ansi C am meisten stört



  • DrGreenthumb schrieb:

    Er bezog sich dabei auf den (völlig unbrauchbaren) Vorschlag: #define // if(0)

    unbrauchbar? der ist sogar besser als //
    damit kannste ganze {} - codeblöcke ausblenden. die eventuellen warnings des compilers von wegen "unreachable code" musste natürlich übersehen 😉



  • kneifel schrieb:

    Optimizer schrieb:

    Viel affiger finde ich es, immer struct schreiben zu müssen. 👎

    typedef??

    Ja? Soll ich für jedes struct ein typedef schreiben? Ist wohl nicht wirklich ernst zu nehmen, sorry.



  • net schrieb:

    DrGreenthumb schrieb:

    Er bezog sich dabei auf den (völlig unbrauchbaren) Vorschlag: #define // if(0)

    unbrauchbar? der ist sogar besser als //
    damit kannste ganze {} - codeblöcke ausblenden. die eventuellen warnings des compilers von wegen "unreachable code" musste natürlich übersehen 😉

    Es geht aber nicht immer!

    if( blubb )
    {
        // Hack: Zum Test mal 0 genommen
    
        foo(0, bar, x); // variable, bar, x);
    }
    

    Jetzt hast Ärger mit deinem if( 0 ) - define. /* / - define nützt dir auch nichts, weil das mit "richtigen" / */ nicht nesten kannst. Ist doch nicht so schwer einzusehen, dass du dir diese Funktionalität nicht selber schaffen kannst, oder?



  • net schrieb:

    DrGreenthumb schrieb:

    Er bezog sich dabei auf den (völlig unbrauchbaren) Vorschlag: #define // if(0)

    unbrauchbar? der ist sogar besser als //

    meinst du das jetzt ernst?? Wer wirklich so ein define baut, gehört geschlagen. So ein falsches // ist doch viel schlimmer als ein fehlendes.

    Optimizer schrieb:

    kneifel schrieb:

    Optimizer schrieb:

    Viel affiger finde ich es, immer struct schreiben zu müssen. 👎

    typedef??

    Ja? Soll ich für jedes struct ein typedef schreiben? Ist wohl nicht wirklich ernst zu nehmen, sorry.

    'türlich ist das Ernst zu nehmen.

    typedef struct Point {
    int x, y;
    } Point;

    Is ja nun nicht so die Welt...



  • Man hätte die C Variante mit den Nützlichkeiten aus C++ ohne Objektorientierung (also quasi C99) einfach C+ nennen sollen.
    Dann gäbs den Ärger nicht.



  • Optimizer schrieb:

    Viel affiger finde ich es, immer struct schreiben zu müssen. 👎

    Dann nimm doch BCPL, da gibt's kein "struct". 😉

    A := B!3  // Zugriff auf Element 4 von B.
    
    // oder
    
    MANIFEST $( 
       DATENSATZ.WURST  = 0
       DATENSATZ.KAESE  = 1
       DATENSATZ.BUTTER = 2
    $)
    
    A := D!DATENSATZ.BUTTER
    

    😃



  • net schrieb:

    DrGreenthumb schrieb:

    Er bezog sich dabei auf den (völlig unbrauchbaren) Vorschlag: #define // if(0)

    unbrauchbar? der ist sogar besser als //

    Unbrauchbar. Schau dir mal die "Phases of translation" an. In C und C++ werden in der dritten Phase Kommentare ersetzt. defines aber erst in der vierten. Aus dem #define // if(0) wird so ein #define und das ist kein gültiger #define-Ausdruck, da der identifier fehlt.



  • Wieso wird in der Phase in der Kommentare ersetzt werden aus
    #define // if(0)
    ein
    #define
    ?

    Der ganze Thread geht doch darum, dass // KEINEN Kommentar einleitet...



  • Wenn der Compiler das // kennt, fällt es natürlich weg. Also ist die Lösung schon mal nicht protabel. Und wie ich weiter oben gezeigt habe, kannst du auch nicht überall, wo es dir gerade passt, ein if reinklatschen.
    Also ist die Lösung völlig unbrauchbar.



  • Optimizer schrieb:

    Also ist die Lösung völlig unbrauchbar.

    Das bezweifle ich nicht 😉



  • Optimizer schrieb:

    Wenn der Compiler das // kennt, fällt es natürlich weg. Also ist die Lösung schon mal nicht protabel. Und wie ich weiter oben gezeigt habe, kannst du auch nicht überall, wo es dir gerade passt, ein if reinklatschen.
    Also ist die Lösung völlig unbrauchbar.

    Langsam bin ich verwirrt, von was redet ihr eigentlich? Auch wenn der Compiler // nicht kennt, geht das natürlich nicht. '/' ist in Identifizieren nicht erlaubt, *so* billig ist der C-Präprozessor nie gewesen. Man kann auch nicht

    #define + -
    int f(void) { return 3 + 3; }
    

    schreiben und hofft dann, das 0 zurückgegeben wird ...



  • Bashar schrieb:

    Was ist eigentlich so schlimm an /* ... */?

    Ich verbieg mir da immer die Finger wenn ich das eingeben muß.

    // ist viel bequemer.



  • Optimizer schrieb:

    kneifel schrieb:

    Optimizer schrieb:

    Viel affiger finde ich es, immer struct schreiben zu müssen. 👎

    typedef??

    Ja? Soll ich für jedes struct ein typedef schreiben? Ist wohl nicht wirklich ernst zu nehmen, sorry.

    Wo ist das Problem?



  • Gut, es ist kein Problem. Alles klar. Ich finds unschön. Aber ein Problem ist es nicht, das stimmt schon.



  • Heul nicht rum du verwöhnter Java-Weichling! 😉 🤡



  • SlashSlash schrieb:

    Bashar schrieb:

    Was ist eigentlich so schlimm an /* ... */?

    Ich verbieg mir da immer die Finger wenn ich das eingeben muß.

    // ist viel bequemer.

    ➡ Amerikanische Tastatur 👍



  • Die bringt einem in dem Fall aber auch nichts. Ob
    kleiner Finger, rechte Hand, unten; Zeigefinger, rechte Hand, oben
    oder
    Zeigefinger, rechte Hand, oben; kleiner Finger, rechte Hand, oben
    ist dann auch egal. Die Amerikanische hat erst den Vorteil, wenn man \ und @ braucht.





  • genau.



  • SG1 schrieb:

    Die Amerikanische hat erst den Vorteil, wenn man \ und @ braucht.

    Oder VIM! 😃

    Dann geht's aber rasant zur Sache! 😉


Anmelden zum Antworten