Bei der Übergabe von Argumenten an main()
in einer C- oder C++-Anwendung, wird argv[0]
immer der Name der ausführbaren Datei sein? Oder ist dies nur eine gängige Konvention und nicht zu 100 % garantiert?
Antworten
Zu viele Anzeigen?Diese Seite Staaten:
Das Element argv[0] enthält normalerweise den Namen des Programms, aber darauf sollte man sich nicht verlassen - es ist ohnehin ungewöhnlich, dass ein Programm seinen eigenen Namen nicht kennt!
Andere Seiten scheinen jedoch die Tatsache zu bestätigen, dass es sich immer um den Namen der ausführbaren Datei handelt. Diese Staaten:
Sie werden feststellen, dass argv[0] der Pfad und der Name des Programms selbst ist. Dies ermöglicht es dem Programm, Informationen über sich selbst zu finden. Außerdem wird das Array der Programmargumente um ein weiteres Argument erweitert. Ein häufiger Fehler beim Abrufen von Befehlszeilenargumenten besteht darin, argv[0] zu nehmen, obwohl Sie argv[1] benötigen.
Ich bin mir nicht sicher, ob es sich um eine fast universelle Konvention oder einen Standard handelt, aber auf jeden Fall sollten Sie sich daran halten. Ich habe allerdings noch nie gesehen, dass es außerhalb von Unix und Unix-ähnlichen Systemen ausgenutzt wurde. In Unix-Umgebungen - und vielleicht besonders in den alten Tagen - können sich Programme je nach dem Namen, unter dem sie aufgerufen werden, sehr unterschiedlich verhalten.
BEARBEITET: Wie ich aus anderen Beiträgen ersehen kann, hat jemand festgestellt, dass es aus einer bestimmten Norm stammt, aber ich bin sicher, dass die Konvention schon lange vor der Norm bestand.
- See previous answers
- Weitere Antworten anzeigen