#define STRICT



  • Erstmal: Hallo Forum!

    Ich steige gerade in C/C++ ein und finde nicht heraus warum

    #define STRICT
    

    sehr oft angewendet wird.

    Dies währe ja eine symbolische Konstante ohne Inhalt (also nur definiert/deklariert, nicht aber initialisiert).
    Ist dies etwa eine Compilerdirektive über den Präprozessor? Und wenn ja für was?

    Vielen Dank für eine Antwort!



  • hallo

    ein kurzer text aus der msdn dazu:

    Durch das Aktivieren der STRICT-Typüberprüfung kann die Art der Fehlermeldungen beeinflußt werden, die Sie erhalten. Wenn STRICT aktiviert ist, werden alle Zugriffsnummerntypen als Zeigertypen definiert. Wenn Sie diese Typen nicht richtig verwenden (indem Sie zum Beispiel int übergeben, wenn HDC erwartet wird), erhalten Sie Warnungsmeldungen, die sich auf die Dereferenzierung von Zeigern beziehen.

    STRICT verlangt auch, daß Funktionszeiger vom Typ FARPROC zu spezifischeren Zeigertypen wie DLGPROC umgewandelt werden. MakeProcInstance und FreeProcInstance arbeiten jedoch richtig mit dem Typ FARPROC. Wenn Sie FARPROC nicht zum entsprechenden Funktionszeigertyp umwandeln, warnt Sie der Compiler vor einem Fehler in den Funktionsparameterlisten.

    Beachten Sie, daß die Verwendung von MakeProcInstance für die Portabilität hilfreich ist, falls Sie denselben Quelltext für Windows 3.x kompilieren möchten. Unter Win32 führt MakeProcInstance keine Operation aus, gibt jedoch den Funktionsnamen zurück.

    ps: nur ein auszug, vieles mehr dazu in der msdn



  • Aha, Danke! (Ich finde mich noch nicht so recht im MSDN zurecht)

    Also ist dies eine Compilerdirektive, richtig?


Log in to reply