Win Main/Main und deren Parameter



  • mit den grundlagen von C++ komm ich schon weitgehend zurecht, aber eine frage wurde bisher noch nicht wirklich beantwortet.

    Die Paramter von WinMain, die da mitgegeben werden ( WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); )können, hab ich soweit eigentlich verstanden.

    jetzt bin ich aber über folgendes gestoßen...

    int main(int argc, void **argv)
    

    jetzt bin ich etwas ratlos, weil dies sollte ein aktueller code sein, und erst gestern hab ich irgendwo gelesen, daß main{} ein relikt aus C zeiten sein soll, und eigentlich WinMain nun standardmässig genutzt wird.
    Wobei dies nicht das große Problem ist, eher die Parameter die da übergeben werden.
    Die verstehe ich nämlich garnicht.
    und vorallem wozu sind sie denn gut.
    Klar, funktionen kenn ich, und da kann man auch parameter übergeben, aber bei solch einer main, ist mir deren nutzen noch etwas schleierhaft.

    Ach und noch eine frage am Rande: bei der WinMain kann vorher wohl noch WINAPI stehen, wozu dient dieses.

    Ich mein, klar ich kanns auch eigentlich immer nur übernehmen, aber ich möchte natürlich auch zu 100% wissen wie ein code funktioniert.

    Danke für eure hilfe.



  • Das genannte ist eine völlig korrekte und übliche Schreibweise der main. Ebenefalls oft kommt das hier vor:

    int main () {}
    

    Also ohne Parameter.
    Die Parameter, die dort oben sind, sind die, die beim Aufruf übergeben werden können und dann mittels argc ( Anzahl Parameter ) und argv ( Eigentlichen Werte ) ausgelesen werden können.

    WinMain und co. sind Windowsspezifisch und machen daher auch nur dort Sinn und haben mit C++ direkt nichts am Hut. Von dem her bist du mit der genannten Variante und meiner genannten auf der sicheren Seite, da diese per Standard funktionieren müssen. (Auf allen Standardkonformen Compilern)



  • genau mir gings nur darum, wozu diese parameter nötig sind, brauchen würde ich die in meinem code nämlich nicht.
    vielleicht gibts ja ein kleines codebeispiel, wo dieses arc zeugs zu sehen ist....

    weil hab nen code hier wo eine dx9 dll genutzt wird, also nur paar dx9 funktionen ausgeführt werden.



  • Guck mal hier:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-153968-and-highlight-is-wozu+argc+argv.html

    Wenn du die Parameter nicht brauchst, dann kannst du sie auch getrost weglassen.


Anmelden zum Antworten