Makro aus wxWidgets



  • Hey Leute.
    Ich habe mal eine frage.
    Die Bibliothek wxWidgets benutzt ja zum instaliesieren ein Makro namens "IMPLEMENTAPP(MyApp)" doch aller dingst wird dieses ohne ein Semikolon (;) geschrieben was darauf deutet das es ein Makro ist, doch Makros lassen sich doch nur über eine Zeile verfassen. Wie ist dan dieses Makro möglich was die main methode im Programm ersetzt? Das muss ja mehrere Zeilen enthalten. Ich hab in die header gekuckt da stand irgenwas mit typedef...
    Mfg Wikinger75! 🙂



  • Makros können durchaus mehrere Zeilen enthalten.
    http://www.cpp-tutor.de/cpp/le08/le08_04_d1.htm



  • So ein Makro ist recht einfach:

    #ifdef _WIN32
    #define dtImplementAppWin32(C)                                  \
    C *dtApplication = new C();                      \
    extern "C"                                                      \
    BOOL WINAPI WinMain( HINSTANCE,                                 \
                         HINSTANCE,                                 \
                         LPSTR,                                     \
                         int )                                      \
    {                                                               \
        DieselGameDLL::dtString cmdLine(GetCommandLine());          \
        /* Enter Library */                                         \
        return dieselEntryPoint(cmdLine, dtApplication);  \
    }
    #else
    #error TODO
    #endif
    

    Aus einer Anwendung von mir schnell rauskopiert^^.
    rya.



  • Abgesehen davon wäre es auch gut möglich, die main() -Funktion in eine Zeile zu packen. Allerdings halte ich es für ziemlich sinnfrei, dafür ein Makro zu schreiben... 😉



  • Nexus schrieb:

    Abgesehen davon wäre es auch gut möglich, die main() -Funktion in eine Zeile zu packen. Allerdings halte ich es für ziemlich sinnfrei, dafür ein Makro zu schreiben... 😉

    Naja so sinnfrei ist das gar nicht. Wenn man wie wxWidgets eine XPLatform-API hat, ist das Unterfangen dem User auf jedem System einen einheitlichen und Objektorientierten Start in die API zu ermöglichen gar nicht so dumm. Zumal Windows als einzigstes OS hier wieder sein eigenes Süppchen kocht.

    Man kann darüber aber viel streiten.
    rya.


Anmelden zum Antworten