Mehrere Rückgabetypen?



  • Ich hab mich mal an ein paar WinAPI Tutorials heran gewagt und dabei bin ich auf folgende Beschreibung der WinMain()-Funktion getoßen:

    Code:
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
    Code:
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
    Code:
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);

    Und beim Durchstöbern der WinUser.h i ist es sogar noch schlimmer geworden:

    Code:
    WINUSERAPI int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
    Code:
    WINUSERAPI int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
    Code:
    WINUSERAPI int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);

    Also ich vermute ja dass in beiden Beispielen der Rückgabetyp int ist, aber was machen denn die anderen Dinge da? Sollen das weitere Rückgabetypen sein oder was ist das? Also ich will jetzt nicht direkt wissen was WINUSERAPI oder WINAPI hier zu bedeuten haben, sondern was das soll dass vor dem Funktionsnamen, wo ja eigentlich nur ein einziger Rückgabetyp stehen sollte, noch irgendwelche anderen Sachen stehen.

    mfg



  • das sind keine rückgabetypen und das kannst du erstmal ignorieren, das sind größtenteils dinge, die aus alten windoof zeiten stammen und gar keine bedeutung mehr haben. der rückgabetyp ist schon int wie du richtig erkannt hast.





  • Mmmmhhh ok, kennt vielleicht jemand nen Link auf ne Seite wo das beschrieben wird? Es geht mir eigentlich weniger darum was die Dinge sind, sondern wie das mit der C-Syntax konform ist, dass da mehrere Sachen vor dem Funktionsnamen stehen.

    mfg


  • Mod

    Da dies erstmal defines sind, müsstest Du klären, was in den defines steht, bevor Du entscheiden kannst was konfrom ist oder nicht.

    Du bist bereits auf einen Link hingewisen worden, der WINAPI als __stdcall definiert.
    In diesem Fall weisen die beiden Underscores Dich bereits auf eine compilerspzifisches Keyword hin. Also ist es "konform" soweit es den Compiler bertifft und das Schlüsselwort __stdcall 😉

    Siehe:
    http://msdn.microsoft.com/en-us/library/zxk0tw93(VS.80).aspx



  • Auch hier nochmals danke an alle.
    Das mit den Calling Conventions hat mir sehr geholfen, das kannte ich bisher noch nicht.

    mfg


Anmelden zum Antworten