BOOL, TRUE, FALSE



  • Ich benutze einfach true und false, weil der Editor es farblich hervorhebt, im Gegensatz zu TRUE und FALSE. Allein deshalb kommt es mir schon richtiger vor.

    BTW: Ist das nicht ne ziemlich lächerliche Diskussion? (Bitte nicht schlagen)



  • noebef schrieb:

    BTW: Ist das nicht ne ziemlich lächerliche Diskussion? (Bitte nicht schlagen)

    Nein, *plonk* 🤡



  • Standard-C++ kennt weder TRUE, FALSE noch BOOL. Ende.

    Bekannt. C++ verwendet bool, true, false.

    Ich war nur etwas erstaunt, dass Dev-C++, der ansonsten sehr nahe am C++-Standard ist, via <iostream> BOOL, TRUE und FALSE unterstützt. Darauf wollte ich aufmerksam machen.



  • @Erhardt
    trotzdem kein Grund das zu benutzen. Die C++ Library benutzt wahrscheinlich intern die WinAPI Funktionen und inkludiert so windef.h oder so was.

    Und warum sollte man auf die dumme Idee kommen, einen uralten C Workarroung (und C hat mittlerweile sogar einen Bool Typ) zu benutzen. Nicht nur das der Compiler das schlechter optimieren kann und der Code wie bereits gesagt nicht gehighlightet wird, man verliert auch noch Standardkompatibilität oder muss sich eigene Typedefs etc. einbauen, was ja IMHO Sinnlos und Zeitverschwendung ist.



  • Die C++ Library benutzt wahrscheinlich intern die WinAPI Funktionen und inkludiert so windef.h oder so was.

    Darüber war ich doch etwas erstaunt. Gerade bei Dev-C++ hätte ich dies nicht erwartet!

    Standardkompatibilität, Portabilität und Codehighlighting sprechen selbstverständlich für die in C++ eingebauten Datentypen und Literale. 🙂



  • kingruedi schrieb:

    und C hat mittlerweile sogar einen Bool Typ

    Der super im Vergleich zu den anderen Typen aussieht und sogar fast wie das C++ Äquivalent geschrieben wird (_Bool <-> bool). 🙄

    BOOL TRUE FALSE sollte imo niemand mehr verwenden, der nicht explicit was mit der WinAPI macht. Ich denke, selbst MS distanziert sich davon. Denn in den Managed C++ Funktionen von .NET, mit denen ich bisher zu tun hatte, wird selbst da mittlerweile bool true false genutzt.



  • groovemaster2002 schrieb:

    kingruedi schrieb:

    und C hat mittlerweile sogar einen Bool Typ

    Der super im Vergleich zu den anderen Typen aussieht und sogar fast wie das C++ Äquivalent geschrieben wird (_Bool <-> bool). 🙄

    Ich denke das haben die gemacht, weil viele sich bool schon selber definiert hatten. Darauf sollte ein Sprachstandard imho aber keine Rücksicht nehmen 🙄 . Gibt es eigentlich mittlerweile einen vollständigen C99-Compiler?



  • MaSTaH schrieb:

    Darauf sollte ein Sprachstandard imho aber keine Rücksicht nehmen 🙄 .

    Aber Compilerhersteller müssen Rücksicht auf ihre Kunden nehmen. Sie würden somit C99 nicht in dem Maße umsetzen, wie wenn der Standard doch Rücksicht genommen hätte. Glücklicherweise wird der Standard aber nicht von Gott persönlich erstellt, sondern von Compilerherstellern und Usern, so dass sich das Problem gar nicht erst ergibt 😉



  • @groovemaster2002
    dann inkludier mal stdbool.h da hast du dann auch bool und true und false 🙄

    @MaSTaH
    Der GCC unterstützt das sehr gut. Aber es gibt ja auch keinen Compiler, der den C++98 Standard 100% unterstützt.



  • Mag schon sein, ich denke aber im Falle eines C99 bool wäre der Aufwand für evtl. Codeanpassungen doch eher gering ausgefallen. Ein typedef oder define entfernen und Folgeschäden ausbessern (die eh nur auf unsauberes Programmieren hindeuten). Kann aber schon verstehen, wenn da Firmen nicht mitmachen, erst recht, wenn dies viele grosse Projekte betrifft. Naja, manchmal ist halt Engstirnigkeit auch nur Mittel zum Zweck.



  • @groovemaster
    aber vielleicht kannst du nicht immer einfach ein Suchen/Ersetzen durchführen, weil du zB. eine Binär Library hast, die bool definiert und dann würdest du ja die Binär Kompatibilität brechen, da das bool typedef und bool aus C99 (was ja deswegen _Bool heisst :)) nicht gleich groß oder alignet sein müssen.

    Und ich möchte nicht wissen, wie viele staubige alte Zeilen C Code überall rumfliegen und Dinge steuern, die wir nichtmal bemerken. Ich hätte zB. keine Lust mit dem Flugzeug abzustürzen, nur weil die vom Standardkomitee dachten "oh, machen wir aus _Bool bool" und irgend jemand sich dann Probleme mit irgend einer API einfängt.



  • Flugzeugsteuerungen werden *hoffentlich* nicht in C geschrieben 😉



  • Bashar schrieb:

    Flugzeugsteuerungen werden *hoffentlich* nicht in C geschrieben 😉

    wollte nur ein möglichst dramatisches Beispiel geben. Ich hätte auch Atomraketen-Abschuß-Steuerung, Stromnetz-Steuerung oder Atomkraftwerk-Steuerung etc. sagen können. Wobei man wohl bei allen hoffen darf, dass die irgend etwas selbst sichernderes genommen haben (ersteres ist wohl klar in ADA programmiert ;))



  • So langsam lichtet sich der Nebel. Vielleicht hat das C Standard Komitee _Bool ja deswegen so verunglimpft gewählt, da _Bool niemand nutzen soll. Wer trotzdem einen Wahrheitswert braucht und kein eigenes bool hat, nimmt bool aus stdbool.h welches wiederum auf _Bool umgeleitet wird.



  • _Bool wurde gewählt, weil schon alte Standards gesagt haben, dass ein Unterstrich und ein folgender Großbuchstabe dem Compiler/nächsten Standard gehört und nicht benutzt werden darf. Genauso ist das mit zwei unterstrichen. Ich glaub in der C++ FAQ steht auch was dazu


Anmelden zum Antworten