Ich habe zufällig mehrere Funktionen, die auf verschiedene Argumente des Programms über das Array argv[]
zugreifen. Im Moment sind diese Funktionen in der main()
-Funktion verschachtelt, da der Compiler eine Spracherweiterung bietet, um solche Strukturen zu ermöglichen.Zugriff auf argv [] von außerhalb der Funktion main()?
Ich möchte die verschachtelten Funktionen loswerden, damit Interoperabilität möglich ist, ohne von einer Spracherweiterung abhängig zu sein.
Zuerst dachte ich an einen Array-Zeiger, den ich auf argv[]
zeigen würde, sobald das Programm startet, würde diese Variable außerhalb der main()
-Funktion sein und vor den Funktionen deklariert, so dass sie von ihnen verwendet werden könnten. So
erklärte ich solch einen Zeiger wie folgt:
char *(*name)[];
, die einen Zeiger auf ein Array von Zeigern auf Zeichen sein sollte. Allerdings, wenn ich versuche, es zu argv[]
hinweisen, erhalte ich eine Warnung bei einer Zuordnung von einem inkompatiblen Zeigertyp:
name = &argv;
Was könnte das Problem sein? Denken Sie über einen anderen Weg nach, um auf das argv[]
Array von außerhalb der main()
Funktion zuzugreifen?
+1 für die erste Antwort * und mehr * die einzige Antwort soweit den Fehler zu erklären. –
Danke für die Erklärung! Ich benutzte 'argv' als' char * argv [] ', also dachte ich an einen Array-Zeiger am Anfang. – Sergi
@Johannes, @Sergi: Danke, ich möchte, dass C/C++ - Bücher einen größeren Akzent auf Unterschiede zwischen Arrays und Zeigern setzen. Diese werden viel zu oft vermischt ... –