redesign windows header



  • Klar nervt das, und zwar wie auch noch.

    class __declspec(dllexport) Foo
    {
    //...
         void LoadImage();
    };
    

    Abhängig davon ob windows.h inkludiert wurde oder nicht heisst die Funktion jetzt LoadImage oder halt LoadImageW .
    Tolle Wurst.

    Oder die GetCurrentTime Funktion die ich irgendwo definiere heisst auf einmal GetTickCount .
    Sollen wir jetzt jeden Bezeichner mit "my" prefixen? Pfff...



  • Irgendwann wird die Windows API nochmal redesignt werden. Vielleicht 😉
    Aber wenigstens Namensraumprefixe hätten die bei MS schon einbauen können, z.B. WINCreateFile oder WINLoadImage.



  • hustbaer schrieb:

    Klar nervt das, und zwar wie auch noch.

    class __declspec(dllexport) Foo
    {
    //...
         void LoadImage();
    };
    

    Abhängig davon ob windows.h inkludiert wurde oder nicht heisst die Funktion jetzt LoadImage oder halt LoadImageW .
    Tolle Wurst.

    Oder die GetCurrentTime Funktion die ich irgendwo definiere heisst auf einmal GetTickCount .
    Sollen wir jetzt jeden Bezeichner mit "my" prefixen? Pfff...

    class __declspec(dllexport) Foo
    {
    //...
         void loadImage();
    };
    
    class __declspec(dllexport) Foo
    {
    //...
         void LoadFooImage();
    };
    
    #ifdef LoadImage
    #undef LoadImage
    #endif 
    
    class __declspec(dllexport) Foo
    {
    //...
         void LoadImage();
    };
    

    4. (gemäß roflos Anmerkung)

    #ifdef LoadImage
    #ifdef UNICODE
    #define WINLoadImage LoadImageW
    #else
    #define WINLoadImage LoadImageA
    #endif
    #undef LoadImage
    #endif 
    
    class __declspec(dllexport) Foo
    {
    //...
         void LoadImage();
    };
    


  • roflo schrieb:

    Irgendwann wird die Windows API nochmal redesignt werden. Vielleicht 😉
    Aber wenigstens Namensraumprefixe hätten sie einbauen können, z.B. WINCreateFile oder WINLoadImage.

    Ist dich schon laaange!
    Nur MS fängt Funktionen mit Großbuchstaben an. Wenn man das nachmacht, klar kollidiert es dann.
    Das erinnert mich an die Fachleute, die mit Borland-Produkten arbeiten und ihre eigenen Klassen mit T - bzw die mit MS-Produkten arbeiten und ihre eigenen Klassen mit C anfangen lassen. Das ist keine so krass gute Idee.
    Also ich hab fast keine Kollisionen, klar, mal max und min, und vielleicht mal das DOMDocument.



  • @Fake oder Echt
    Ist mir schon klar.
    Nur inwiefern auch nur eine dieser Möglichkeiten akzeptabel ist musst du mir noch erklären.

    Heisst: ich kann deinen "ist doch OK/alles kein Problem" Standpunkt so überhaupt nicht nachvollziehen.

    volkard schrieb:

    Nur MS fängt Funktionen mit Großbuchstaben an. Wenn man das nachmacht, klar kollidiert es dann.

    *facepalm*



  • hustbaer schrieb:

    Heisst: ich kann deinen "ist doch OK/alles kein Problem" Standpunkt so überhaupt nicht nachvollziehen.

    Ich sehe es so ... wer sich daran stört, der soll sich eine eigene Lösung einfallen lassen. Schließlich sind die Funktionen der WinAPI Teil der API. Wer C++ nutzt und sich ärgert, dass er als Bezeichner nicht const, static, int, auto, new oder sonstwas wählen kann, der sollte sich einen anderen Weg zur Realisierung seiner Projekte suchen. Wer sich an den (zugegebener Maßen ausgiebig genutzten) Defines der WinAPI stört, sollte sich ein Framework suchen, bei dem das nicht der Fall ist bzw. das alles besser gekapselt ist. Aber auch da gilt es, sich von den internen Bezeichnern abzugrenzen. Wer dazu nicht in der Lage ist und regelmäßig mit bereits bestehenden Bezeichnern aneinandergerät, der sollte sich Gedanken über seinen Programmierstil machen.
    Von den Undefs halte ich persönlich auch nichts, es wäre aber eine Mittel zum Zweck. Mehr als die Defines stören mich in der WinAPI die teils haarsträubende Dokumentation inkl. crashender Beispiele aus der MSDN oder un-/ bzw. teildokumentiertes Verhalten.



  • Fake oder Echt schrieb:

    hustbaer schrieb:

    Heisst: ich kann deinen "ist doch OK/alles kein Problem" Standpunkt so überhaupt nicht nachvollziehen.

    Ich sehe es so ... wer sich daran stört, der soll sich eine eigene Lösung einfallen lassen.

    Die Sache ist bloss dass es keine wirklich gute Lösung gibt.

    Fake oder Echt schrieb:

    Schließlich sind die Funktionen der WinAPI Teil der API.

    Und?

    Fake oder Echt schrieb:

    Wer C++ nutzt und sich ärgert, dass er als Bezeichner nicht const, static, int, auto, new oder sonstwas wählen kann, der sollte sich einen anderen Weg zur Realisierung seiner Projekte suchen.

    Aha.
    Und deswegen macht das Standardkommittee auch mit jedem C++ Standard mehrere Hundert neue Keywords dazu. Und jeder der ne eigene Funktion LoadImage nennen möchte ist unfähig und soll sich nen anderen Job suchen. Klar, OK.

    Fake oder Echt schrieb:

    Wer sich an den (zugegebener Maßen ausgiebig genutzten) Defines der WinAPI stört, sollte sich ein Framework suchen, bei dem das nicht der Fall ist bzw. das alles besser gekapselt ist.

    Es gibt auch Leute die solche Frameworks entwickeln. Frag die mal was sie von den #defines in den Windows Headern halten. z.B. die Entwickler von wxWidgets. Oder ... z.B. auch ... mich. Ne, warte, ich bin ja doof.

    Fake oder Echt schrieb:

    Aber auch da gilt es, sich von den internen Bezeichnern abzugrenzen. Wer dazu nicht in der Lage ist und regelmäßig mit bereits bestehenden Bezeichnern aneinandergerät, der sollte sich Gedanken über seinen Programmierstil machen.

    Hast du schonmal was von Namespaces gehört? Weisst du wozu diese u.A. gedacht sind? Und davon wie sich #defines so überhaupt nicht um diese scheren?

    Fake oder Echt schrieb:

    Von den Undefs halte ich persönlich auch nichts, es wäre aber eine Mittel zum Zweck.

    Lustig, denn genau das ist mMn. noch die beste Lösung.

    Fake oder Echt schrieb:

    Mehr als die Defines stören mich in der WinAPI die teils haarsträubende Dokumentation inkl. crashender Beispiele aus der MSDN oder un-/ bzw. teildokumentiertes Verhalten.

    Wer nicht in der Lage ist die MSDN zu lesen bzw. mit (meist aus trivialen Gründen) crashenden Beispielen klarzukommen...
    Ne, ich sags jetzt nicht.



  • Ich kann nicht ganz nachvollziehen, warum du dich angegriffen fühlst. Weil ich nicht deine Meinung vertrete? Weil ich sowohl was die Doku als auch die generelle Usability betreffend andere (negative) Erfahrungen gemacht habe?
    Wenigstens scheinen wir uns ja bei der Undef-Geschichte insofern einig zu sein, als das das die einzige "Quick"-Lösung ist, auch wenn ich sie "Dirty" finde.
    Weitere polemische Rhetorik, die nicht zum Thema gehört und die keine rhetorische/n Frage/n ist/sind, nehme ich gern über PN entgegen.



  • Fake oder Echt schrieb:

    Ich kann nicht ganz nachvollziehen, warum du dich angegriffen fühlst. Weil ich nicht deine Meinung vertrete? Weil ich sowohl was die Doku als auch die generelle Usability betreffend andere (negative) Erfahrungen gemacht habe?

    Weil du das Problem mit einen total unpassenden Vergleichen ins lächerliche ziehst um dann in Folge Leute die es eben als Problem wahrnehmen für doof bzw. unfähig zu erklären. Kommt zumindest für mich genau so rüber.

    Wenn du das Problem nicht hast bzw. es nicht als Problem wahrnimmst, schön für dich. Das heisst aber nicht dass es nicht existiert oder dass jeder doof bzw. unfähig ist der es eben schon als Problem sieht.



  • hustbaer schrieb:

    Fake oder Echt schrieb:

    Ich kann nicht ganz nachvollziehen, warum du dich angegriffen fühlst. Weil ich nicht deine Meinung vertrete? Weil ich sowohl was die Doku als auch die generelle Usability betreffend andere (negative) Erfahrungen gemacht habe?

    Weil du das Problem mit einen total unpassenden Vergleichen ins lächerliche ziehst um dann in Folge Leute die es eben als Problem wahrnehmen für doof bzw. unfähig zu erklären. Kommt zumindest für mich genau so rüber.

    Wenn du das Problem nicht hast bzw. es nicht als Problem wahrnimmst, schön für dich. Das heisst aber nicht dass es nicht existiert oder dass jeder doof bzw. unfähig ist der es eben schon als Problem sieht.

    Das mit dem doof und unfähig kann ich nicht nachvollziehen, wo man das bei meinen Antworten rauslesen könnte. Aber gut, das war dann das typische Sender-Empfänger-Problem und beim geschriebenen Wort geht das ja meist eh recht schnell mit den Missverständnissen.

    Naja. Programmieren ist ja eh ein bisschen wie eine Ehe. Man muss lernen sich zu arrangieren. Das geht mal mehr, mal weniger.


Anmelden zum Antworten