Frage:
Bei der Übergabe von Argumenten an die Enthält argv[0] in der Hauptfunktion in C oder C-Programmen immer den Namen der ausführbaren Datei? Oder handelt es sich lediglich um eine gängige Praxis, die möglicherweise nicht in allen Fällen zutrifft?
Antwort:
Gemäß ISO C11-Standard:
Wenn Der Wert von argc ist größer als Null, die Zeichenfolge, auf die argv[0] zeigt stellt den Programmnamen dar; argv0 soll das Nullzeichen sein, wenn der Programmname nicht in der Host-Umgebung verfügbar ist.
Daher ist es nicht immer garantiert, dass argv[0] den genauen Namen der ausführbaren Datei darstellt. Vielmehr handelt es sich um einen durch die Implementierung definierten Wert, der von der Host-Umgebung bereitgestellt wird und nicht unbedingt der Dateiname der ausführbaren Datei sein muss.
Der ISO-C-Standard besagt außerdem, dass, wenn argc größer als Null ist, die Array-Mitglieder argv[ 0] bis argv[argc-1] enthalten Zeiger auf Zeichenfolgen mit durch die Hostumgebung definierten Werten, die vor dem Programmstart von der Hostumgebung bestimmt werden.
Dies bedeutet, dass der Wert von argv[0] wird im Standard nicht explizit spezifiziert, was Abweichungen im Verhalten zwischen verschiedenen Plattformen und Betriebssystemen zulässt.
Das obige ist der detaillierte Inhalt vonEnthält „argv[0]' immer den Namen der ausführbaren Datei in C/C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!