PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : int argc, char* argv[] ??



localhost
12-01-2006, 17:53
Was bringt das eindlich das

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

Caveman
12-01-2006, 18:34
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.

Joghurt
12-01-2006, 18:36
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.
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
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)

gorba
13-01-2006, 09:34
ich hätte sonst zufälligerweise noch testprogramme zu argc, argv und getopt.
dan siehst du gleich was die dinger machen. interesse?

mile04
16-01-2006, 10:51
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

peschmae
16-01-2006, 11:51
Für Getopt reicht eigentlich das hier: http://www.gnu.org/software/libc/manual/html_node/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ä

Joghurt
16-01-2006, 16:21
Bevor du durch getopt verwirrt wirst, wenn du dein Programm mit
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.

meinprogramm -abc -o parameterfuero --log-level 65 --foo=bar
würdest du als
"meinprogramm", "-abc", "-o", "parameterfuero", "--log-level" "65","--foo=bar" bekommen, was du aber haben willst, ist

"a", "b", "c", ("o","parameterfuero"), ("log-level",65), ("foo", "bar")

Und das macht getopt für dich.