#define Probleme



  • Hallo,
    ich hoffe ich bin im richtigen Forum, aber es dürfte wohl stimmen, da die Frage recht allgemein ist.
    Folgende Situation (mit MS VS):

    main.cpp:

    #define STRICT
    #define _WIN32_WINNT 0x0500
    #define _WIN32_IE 0x0500
    
    #include <windows.h>
    #include <commctrl.h>
    #include "resource.h"
    #include "extra.h"
    
    //Rest (benötigt _WIN32_WINNT >= 0x0500)
    

    extra.h:

    #ifndef EXTRA_H
    #define EXTRA_H
    
    #if (_WIN32_WINNT < 0x0500)
    #undef _WIN32_WINNT
    #define _WIN32_WINNT 0x0500
    #endif
    
    #include <windows.h>
    
    //Funktionsdeklarationen (benötigen _WIN32_WINNT >= 0x0500)
    
    #endif
    

    und extra.cpp:

    #include "winextra.h"
    
    //Funktionsdefinitionen (benötigen _WIN32_WINNT >= 0x0500)
    

    Es funktioniert zwar alles, aber ich denke, es ist nicht sehr fein, wie ich _WIN32_WINNT in der extra.h neudefiniere.
    Weil eigtl. müsste ja beim kompilieren der main.cpp ein Fehler kommen, dass _WIN32_WINNT bereits definiert ist, oder?
    Wo und wie sollte man dieses Makro am besten definieren?
    MfG,
    Max



  • Dies gehört eher ins WinAPI-Forum (wegen <windows.h>).

    Aber helfen kann ich dir trotzdem.
    Du solltest die Variable _WIN32_WINNT nicht direkt in den Sourcen setzen, sondern am besten direkt bei den Projektoptionen: -D_WIN32_WINNT=0x0500.
    Oder aber, wenn du vorkompilierte Header-Dateien (z.B. stdafx.h) verwendest, dann dort an zentraler Stelle.

    Und in "extra.h" würde ich höchstens eine Compiler-Fehlermeldung werfen:

    #if (_WIN32_WINNT < 0x0500)
    #error _WIN32_WINNT should be >= 0x0500 !!!
    #endif
    


  • Danke für die Tips!
    Ich werde jetzt mit der stdafx.h arbeiten.
    Das ist auch viel übersichtlicher..



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten