Wie kann ich mains *argv übergeben[] zu einer Funktion?
Lesezeit: 2 Minuten
Ich habe ein Programm, das Befehlszeilenargumente akzeptieren kann, und ich möchte über eine Funktion auf die vom Benutzer eingegebenen Argumente zugreifen. Wie kann ich die bestehen *argv[]aus int main( int argc, char *argv[]) zu dieser Funktion? Ich bin ein bisschen neu im Konzept von Zeigern und *argv[] sieht für mich etwas zu komplex aus, um es alleine zu lösen.
Die Idee ist, meine zu verlassen main so sauber wie möglich, indem ich die ganze Arbeit, die ich mit den Argumenten machen möchte, in eine Bibliotheksdatei verschiebe. Ich weiß schon, was ich mit diesen Argumenten zu tun habe, wenn ich es schaffe, sie draußen zu fassen main. Ich weiß nur nicht, wie ich sie dorthin bringen soll.
und ruf das an main wie parse_cmdline(argc, argv). Keine Magie beteiligt.
Tatsächlich müssen Sie nicht wirklich bestehen argcseit dem letzten Mitglied von argv ist garantiert ein Nullzeiger. Aber da hast du argcdu kannst es genauso gut bestehen.
Wenn die Funktion den Programmnamen nicht kennen muss, können Sie sie auch als aufrufen
parse_cmdline(argc - 1, argv + 1);
Was ist, wenn argv als const char *argv definiert ist?[]? So ist OS X, und ich kann Apples ABI nicht genau ändern …
– MarcusJ
4. Juni 2016 um 11:24 Uhr
@MarcusJ Ja – ARC steht dem in XCode unter OSX im Weg. Ich musste sie wie folgt an meine ObjC++-Klassenmethode übergeben getParams(argc,argv)musste dann aber diese Funktion wie deklarieren static std::map<std::string,std::string> getParams(int argc, const char **argv) Beachten Sie das **argv. Dann könnte ich innerhalb der Klassenmethode verwenden argv so normal, als ob es in der wäre main Funktion. (Das map Zeug auf dem Rückgabeergebnis war, weil meine Funktion die Variablen in Schlüssel = Wert-Zuordnungspaare konvertierte. Nicht, dass Sie das auch tun könnten.)