Aktivieren von STRICT
Wenn Sie das STRICT-Symbol definieren, aktivieren Sie Features, die beim Deklarieren und Verwenden von Typen mehr Sorgfalt erfordern. Dies hilft Ihnen, portableren Code zu schreiben. Diese zusätzliche Sorgfalt reduziert auch die Debugzeit. Durch aktivieren von STRICT werden bestimmte Datentypen neu definiert, sodass der Compiler die Zuweisung von einem Typ zu einem anderen ohne explizite Umwandlung nicht zulässt. Dies ist besonders hilfreich bei Windows Code. Fehler bei der Übergabe von Datentypen werden zur Kompilierzeit gemeldet, anstatt schwerwiegende Fehler zur Laufzeit zu verursachen.
Bei Visual C++ ist die STRICT-Typüberprüfung standardmäßig definiert.
Um STRICT dateiweise zu definieren, fügen Sie eine # define-Anweisung ein, bevor Sie Windows.h einfügen:
#define STRICT
#include <windows.h>
Wenn STRICT definiert ist, ändern sich Datentypdefinitionen wie folgt:
- Bestimmte Handletypen sind so definiert, dass sie sich gegenseitig ausschließen. Beispielsweise können Sie kein HWND übergeben, wenn ein HDC-Typargument erforderlich ist. Ohne STRICT werden alle Handles als HANDLE definiert, sodass der Compiler Sie nicht daran hindert, einen Handletyp zu verwenden, bei dem ein anderer Typ erwartet wird.
- Alle Rückruffunktionstypen (z. B. Dialogprozessen, Fensterprozessen und Hookprozessen) werden mit vollständigen Prototypen definiert. Dadurch wird verhindert, dass Rückruffunktionen mit falschen Parameterlisten deklariert werden.
- Parameter- und Rückgabewerttypen, die einen generischen Zeiger verwenden sollten, werden ordnungsgemäß als LPVOID und nicht als LPSTR oder ein anderer Zeigertyp deklariert.
- Die COMSTAT-Struktur wird gemäß dem ANSI-Standard deklariert.