#define oder const in eigener .h



  • was ist schöner:

    Variante a:
    #define STATUS_EMPTY -1

    Variante b:
    Konstanten in einem eigenen header z.B. constants.h zu definieren: const short STATUS_EMPTY = -1;

    Bitte abstimmen (am besten mit einer Begründung), thanx'



  • Es gibt 2 Gründe, warum ich die #define Variante beforzuge:

    1. Ich glaub das der Quellcode mit #defines schneller ist, als die const Variante (wenn der Compiler das Wegoptimert gibts natürlich keinen Speedverlust). Ich fühle mich aber mit #define ein wenig wohler und denke, dass der Compiler draus mehr machen kann. (Wie gesagt mein Empfinden)

    2. Was ich viel wichtiger finde ist, dass ich eine const Variable im Gegensatz zu einem #define nicht in einem switch block abtesten kann!!! Das finde ich wircklich blöd weil man dadurch auch einen Performanzeverlust hat (Weil man kein switch verwenden kann, und dadurch die Jumptable Optimierung des Compilers drastisch erschwert, bzw nicht zulässt). Dieses Ewige lange else if construct nerven, und schaun auch nicht so schön aus.

    Meine bevorzugt Variante: In C Klar das #define



  • Ich persönlich würde soweit es geht auf #define's verzichten, da der Präprozessor ja keine Typprüfung durchführt.
    Bei vielen aufeinander aufbauenden konstanten Werten würde ich ein enum verwenden.
    Ich frage mich sowieso, warum M$ und Konsorten in ihren Headern so häfig Gebrauch von #define's machen, vielleicht kann da ja auch noch jemand was zu sagen 😕



  • Jürgonaut schrieb:

    Ich fühle mich aber mit #define ein wenig wohler und denke, dass der Compiler draus mehr machen kann. (Wie gesagt mein Empfinden)

    Jep, lediglich dein empfinden.

    Da es in C aber keine echten Konstanten gibt, muss man dennoch #define nehmen.
    const ist in C nur eine spielerei


Anmelden zum Antworten