true oder TRUE



  • ist ein microsoftspezifisches Makro.
    Wenn möglich benutz bool.



  • TRUE ist ein define auf 1



  • Der Unterschied ist, das "true" als Wahrheitswert bei C++ reserviert ist und der Autor die Variable "TRUE" als Wahrheitswert definiert hat. Sehr verwirrend finde ich.



  • Warum es TRUE überhaupt gibt: Weil es in C lange Zeit kein bool gab und man trotzdem eins bei der Entwicklung der WinAPI benötigte. Da 1 und 0 nicht sehr aussagekräftig sind hat man sich für die Konstanten TRUE und FALSE entschieden - großgeschrieben, weil man Konstanten nunmal groß schreibt. Später kam dann in C++ und schließlich auch in C bool mit true und false. Die WinAPI stellte natürlich nicht mehr um und behielt ihr TRUE und FALSE, viele Entwickler haben auch nie umgestellt.

    MfG SideWinder



  • Man findet vergeleichbares oft in Sourcecodes. Ich kann mich z. B. an ein Programm ("MAT" genannt) erinnern, dass ich umbauen musste, da stand ein

    #define MAT_REAL   double
    #define MAT_BOOL   unsigned short
    #define MAT_true   1
    #define MAT_false  0
    
    //etc.
    

    und nur diese Variablennamen wurden verwendet.



  • Ist bei OpenGL z.B. auch so.



  • #define FALSE 0
    #define TRUE !FALSE



  • #define C_CODER FRICKLER



  • MBCS-CITP schrieb:

    Man findet vergeleichbares oft in Sourcecodes. Ich kann mich z. B. an ein Programm ("MAT" genannt) erinnern, dass ich umbauen musste, da stand ein

    #define MAT_REAL   double
    #define MAT_BOOL   unsigned short
    #define MAT_true   1
    #define MAT_false  0
    
    //etc.
    

    und nur diese Variablennamen wurden verwendet.

    Ja, das ergibt ja auch durchaus Sinn. Ich schreibe an einem Compiler für eine Sprache mit den Nativen Datentypen 'Int', 'Byte', 'String' etc., welche ich dann auch in C++ verwende, um Literalwerte korrekt hineinzuparsen.

    Allerdings verwendet man für sowas nicht 'define' (wie kommt man auf solch eine Idee?!) sondern natürlich 'typedef'.



  • SideWinder schrieb:

    Warum es TRUE überhaupt gibt: Weil es in C lange Zeit kein bool gab und man trotzdem eins bei der Entwicklung der WinAPI benötigte. Da 1 und 0 nicht sehr aussagekräftig sind hat man sich für die Konstanten TRUE und FALSE entschieden - großgeschrieben, weil man Konstanten nunmal groß schreibt. Später kam dann in C++ und schließlich auch in C bool mit true und false. Die WinAPI stellte natürlich nicht mehr um und behielt ihr TRUE und FALSE, viele Entwickler haben auch nie umgestellt.

    MfG SideWinder

    Nun, die haben es natürlich nicht umgestellt, da sie durch ihr BOOL noch viel viel mehr aussagen können als "Funktion hat geklappt" und "Funktion hat nicht geklappt".
    Ich denke da an solche Sachen wie ...

    #define ERROR_SUCCESS 7
    #define PERHAPS_GOOD  8
    #define MAYBE_WRONG   9
    

Anmelden zum Antworten