bedingte kompilierung



  • hi,
    wo stehen eigentlich die macros definiert, mit deren hilfe man nach den verschiedenen os-versionen kompilieren kann?
    ich verdeutliche mal, was ich meine:

    #ifdef ABC_MACRO
    //... kompiliere für windows98
    #endif
    
    #ifdef DEF_MACRO
    //... kompiliere für windows_xp
    #endif
    
    #ifdef XYZ_MACRO
    //... kompiliere für windows vista
    #endif
    


  • Es gibt z.B. _WIN32_WINNT. Du kannst ja mal per Goto Definition gucken, in welchem Header das definiert ist.


  • Mod

    Die ist von sich aus gar nicht definiert, bzw. fällt als default je nach SDK Version auf einen bestimmten Wert.

    Man sollte diese tunlichst selbst definieren!

    Siehe auch:
    Using the Windows Headers
    http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx

    Jedes meiner Projekte hat eine include Datei mit dem Namen: PlatformDefinition.h

    Die sieht etwas so aus, je nach Ziel OS:

    #ifndef NTDDI_VERSION		// Allow use of features W2K and later
    #define NTDDI_VERSION		NTDDI_WIN2K
    #endif 
    
    #ifndef WINVER			// Allow use of features W2K and later
    #define WINVER			0x0500		
    #endif
    
    #ifndef _WIN32_WINNT		// Allow use of features specific to W2K or later.
    #define _WIN32_WINNT		0x0500	
    #endif						
    
    #ifndef _WIN32_IE			// Allow use of features specific to IE 5.0 or later.
    #define _WIN32_IE			0x0500	
    #endif
    

Log in to reply