Anzeige:
Ergebnis 1 bis 7 von 7

Thema: int argc, char* argv[] ??

  1. #1
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396

    int argc, char* argv[] ??

    Was bringt das eindlich das

    int main(int argc, char* argv[])
    wo ist das der unterschid zwichen
    int main()
    oder
    main()

  2. #2
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    In C++ hat main immer einen return-Wert, also muss es int main() heißen.
    Um Parameter übergeben zu können benötigt man in der Klammer int argc und char* argv[].
    Ersteres beinhaltet die Anzahl der übergebenen Parameter, das Array char* argv[] hat die einzelnen Parameter.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    1. int main(int argc, char* argv[])
      Bedeutet: main ist eine Funktion, die die Parameter ... nimmt und int zurückgibt, so muss main eigentlich definiert sein, da sie so aufgerufen wird.
    2. int main()
      Bedeutet in C: main ist eine Funktion, dessen Parameter mich nicht interessieren.
      In C++ bedeutet es hingegen: main ist eine Funktion, die keine Paramter nimmt
    3. main()
      Bedeutet in C: main ist eine Funktion mit (oder ohne) uninteressanten Parameter, die "int" zurückgibt (wenn dort nichts steht, nimmt C int an), also dasselbe wie 2)
      In C++ ist das ungültige Syntax.


    Also. Nummer 1) ist korrekt, mit Nummer 2) kommt man meistens durch, Nummer 3) ist ganz ganz schlechter und veralteter Programmierstil (es sei den, du möchtest beim Obfuscated C Contest mitmachen)

    Lange Rede, kurzer Sinn: nimm 1)

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.12.2005
    Ort
    CH - Zug
    Beiträge
    88
    ich hätte sonst zufälligerweise noch testprogramme zu argc, argv und getopt.
    dan siehst du gleich was die dinger machen. interesse?
    /* -->
    RTFM
    <-- */

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.07.2004
    Beiträge
    29
    Zitat Zitat von gorba
    ich hätte sonst zufälligerweise noch testprogramme zu argc, argv und getopt.
    dan siehst du gleich was die dinger machen. interesse?
    ja ich habe Interesse, würdest du mal bitte posten vieln Dank

  6. #6
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Für Getopt reicht eigentlich das hier: http://www.gnu.org/software/libc/man...de/Getopt.html

    Allerdings finde ich das etwas merkwürdig zu programmieren. Insbesondere wenn man auch noch die langen Optionen verwendet - un ddas tut man ja meistens.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  7. #7
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Bevor du durch getopt verwirrt wirst, wenn du dein Programm mit
    Code:
    meintollesprogramm parameter1 parameter2 parameter3
    aufrufst, enthält:

    argc = 4 (Anzahl der Einträge in argv, 1. ist immer Programmname, + 3 Parameter)
    argv[0] = "meintollesporgramm"
    argv[1] = "parameter1"
    argv[2] = "parameter2"
    argv[3] = "parameter3"

    getopt vereinfacht es sehr, damit umzugehen, denn z.B.
    Code:
    meinprogramm -abc -o parameterfuero --log-level 65 --foo=bar
    würdest du als
    Code:
    "meinprogramm", "-abc", "-o", "parameterfuero", "--log-level" "65","--foo=bar"
    bekommen, was du aber haben willst, ist
    Code:
    "a", "b", "c",  ("o","parameterfuero"), ("log-level",65), ("foo", "bar")
    Und das macht getopt für dich.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •