Bedingtes Kompilieren erweitert.
Informationen
- Kategorien: Kernel | Klassenformeln
- Version: 21.0.0.11226
- Veröffentlichungsdatum: Mittwoch, 26. Oktober 2016
- Entwickler: Fischer
- Benötigt Datenbankänderung: Nein
- Betreff: #if unterstützt Vergleichsoperatoren, Makros für Version/Revision, Test auf Kern-Funktion
Beschreibung
Bei der Präprozessor-Direktiven #if können Macro-Werte mit einer Ganzzahl verglichen werden. Erlaubte Vergleichsoperatoren sind ==, !=, <, <=, >, >=.
Beispiele:
// ab Revision 8456 in Release-Version oder Revision 8635 in EarlyAdopter-Version #if (KERNEL_RELEASE_VERSION && KERNEL_REVISION >= 8456) || (KERNEL_EARLYADOPTER_VERSION && KERNEL_REVISION >= 8635)
#if KERNEL_VERSION >= 19002 // ab Version 19.2.0
#if KERNEL_MAJOR_VERSION == 18 // Version ist 18.x.0, d.h. Hauptversion 18, Unterversion beliebig
Bei der Präprozessor-Direktiven #if kann durch die Präprozessor-Funktion 'kernel_function' geprüft werden, ob eine implizite Funktion (Kern-Funktion) existiert.
Beispiel: In neuen Kern-Versionen steht die Funktion NewFunction() zur Verfügung, in alten Versionen nicht.
#if kernel_function( NewFunction ) NewFunction(); // NewFunction kann aufgerufen werden #else // NewFunction steht nicht zur Verfügung, Funktionalität auf anderem Weg ausführen oder Fehlerbehandlung // ... #endif
Folgende vordefinierte Macros stehen zur Verfügung:
KERNEL_VERSION - z.B. 20001 bei Version 20.1.0.8954 KERNEL_MAJOR_VERSION - z.B. 20 bei Version 20.1.0.8954 KERNEL_MINOR_VERSION - z.B. 1 bei Version 20.1.0.8954 KERNEL_REVISION - z.B. 8954 bei Dateiversion 20.1.0.8954
KERNEL_DEVELOPER_VERSION - true bei Developer-Version KERNEL_EARLYADOPTER_VERSION - true bei EarlyAdopter-Version KERNEL_RELEASE_VERSION - true bei Release-Version
RUNNING_IN_UI_MODE - UI (user interaction) ist möglich RUNNING_AS_SERVICE - das Programm läuft als Service