C
[quote="Uli"]ein Makro ist ja immer nur so aktuell, wie das include File, in dem es definiert ist, aber schau Dir mal folgende Funktion an, die ich auch schon öfter benutzt habe.
OSVERSIONINFO OSV;
...
GetVersionEx (&OSV);
...
[/code]
Ihm gehts glaube ich, um die installierte SDK, nicht um die Versionsnummer des OS.
@WinAPI-Neugieriger:
Es gib keine, in einem Makro festgehaltene Versionsnummer der aktuell verwendeteten API, was dir bleibt
ist folgendes:
Tabelle 1.1 Vordefinierte ANSI-Makros
Makro Beschreibung
__DATE__ Das Kompilierungsdatum der aktuellen Quelldatei. Das Datum ist ein Zeichenfolgenliteral in der Form mmm tt jjjj. Der Monatsname mmm ist derselbe wie bei den Daten, die durch die Bibliotheksfunktion asctime erzeugt werden, die in TIME.H deklariert wird.
__FILE__ Der Name der aktuellen Quelldatei. __FILE__ wird zu einer Zeichenfolge expandiert, die von doppelten Anführungszeichen eingeschlossen ist.
__LINE__ Die Zeilennummer in der aktuellen Quelldatei. Die Zeilennummer ist eine dezimale Ganzzahlkonstante. Sie kann mit der #line-Direktive geändert werden.
__STDC__ Zeigt volle Übereinstimmung mit dem ANSI C-Standard an. Wird nur als Ganzzahlkonstante mit dem Wert 1 definiert, wenn die Compileroption /Z angegeben wird und kein C++-Code kompiliert wird; andernfalls ist die Konstante undefiniert.
__TIME__ Die letzte Kompilierungszeit der aktuellen Quelldatei. Die Zeit wird als Zeichenfolgenliteral in der Form hhss angegeben.
__TIMESTAMP__ Datum und Uhrzeit der letzten Änderung der aktuellen Quelldatei, ausgedrückt als Zeichenfolgenliteral in der Form ttt mmm Datum hhss:jjjj, wobei ttt der abgekürzte Wochentag und Datum eine Ganzzahl zwischen 1 und 31 ist.
Tabelle 1.2 Microsoft-spezifische vordefinierte Makros
Makro Beschreibung
_CHAR_UNSIGNED Standardmäßig ist der char-Typ ohne Vorzeichen. Ist definiert, wenn /J angegeben wird.
__cplusplus Nur für C++-Programme definiert.
_CPPRTTI Definiert für Code, der mit /GR (Run-Time-Type-Informationen zur Laufzeit aktivieren) kompiliert wird.
_CPPUNWIND Definiert für Code, der mit /GX (Ausnahmebehandlung aktivieren) kompiliert wird.
_DLL Definiert, wenn /MD oder /MDd (Multithreaded DLL) angegeben wird.
_M_ALPHA Definiert für DEC ALPHA-Plattformen. Wird vom ALPHA-Compiler als 1 definiert und ist undefiniert, wenn ein anderer Compiler verwendet wird.
_M_IX86 Definiert für x86-Prozessoren. Weitere Einzelheiten in Tabelle 1.3.
_M_MPPC Definiert für Power Macintosh-Plattformen. Standard ist 601 (/QP601). Weitere Einzelheiten in Tabelle 1.4.
_M_MRX000 Definiert für MIPS-Plattformen. Standard ist 4000 (/QMR4000). Weitere Einzelheiten in Tabelle 1.5.
_M_PPC Definiert für PowerPC-Plattformen. Standard ist 604 (/QP604). Weitere Einzelheiten in Tabelle 1.6.
_MFC_VER Definiert die MFC-Version. Definiert als 0x0421 für Microsoft Foundation Class Library 4.21. Immer definiert.
_MSC_EXTENSIONS Dieses Makro ist definiert, wenn mit der Compileroption /Ze kompiliert wird (Standard). Hat den Wert 1, wenn es definiert ist.
_MSC_VER Definiert die Compilerversion. Definiert als 1100 für Microsoft Visual C++ 5.0. Immer definiert.
_MT Definiert, wenn /MD oder /MDd (Multithreaded DLL) oder /MT oder /MTd (Multithreaded) angegeben wird.
_WIN32 Definiert für Win32-Anwendungen. Immer definiert.
Sonst kannst du dir ja auch selbst Versionsnummer für deine Funktionen anlegen...alá:
#define MY_FUNCTION_COLLECTION_VER 1000