Auf der Suche nach CALLBACK :-)



  • Auf der Suche nach CALLBACK 🙂

    Also ich wollte man mehr über C++ Interna wissen und wollte einfach mal nachgucken wie CALLBACK in c++ definiert ist.

    Folgendes habe ich gefunden:

    #define __attribute__(x)
    #define __stdcall __attribute__((stdcall))
    #define CALLBACK __stdcall

    man könnte statt CALLBACK auch __stdcall schreiben. Statt __stdcall auch __attribute__((stdcall)). Aber ab hier blicke ich nicht durch - wird __attribute__((stdcall)) dann durch (stdcall) ersetzt oder wie? Naja ich benutze GCC.

    PS: __attribute__(x) steht nur in einer Zeile in allen h-files.



  • thread verschoben ins winapi forum WinAPI



  • Original erstellt von <gogo>:
    **#define __attribute__(x)
    **

    Das definiert alle attribute auf das nichts, also jedes __attribute__(x) wird zu nichts aufgelöst. Ist aber ne merkwürdige Definition, im gcc-Text hat __attribute__ eigentlich eine große Bedeutuung für den Compiler. __stdcall ist jedenfalls eine Art und weise, wie die Funktion im Assemblercode ihre Parameter bekommt, da muss eine feste Methode benutzt werden, da Windows die Callback funktionen genau so aufruft.



  • __attribute__((stdcall))

    ist ja nicht

    __attribute__(x)

    bedeutet das dann dass __attribute__((stdcall)) stehenbleibt und nicht ersetzt wird? Mich macht dieses (x) total wahnsinnig... Ich verstehe nicht ob es nun was macht oder nicht



  • Original erstellt von <gogo>:
    bedeutet das dann dass __attribute__((stdcall)) stehenbleibt und nicht ersetzt wird? Mich macht dieses (x) total wahnsinnig... Ich verstehe nicht ob es nun was macht oder nicht

    x ist ein parameter. Beispiel:

    #define foo(x) (x+1)

    printf("%d", foo(3));

    gibt 4 aus. Für x wird der jewilige Parameter aus, hier expandiert das also zu:
    printf("%d", 3+1);

    Ebenso wird in deinem Beispiel für das x eingesetzt (stdcall)



  • Cool danke - habe mir schon fast gedacht


Anmelden zum Antworten