2011-01-01 4 views
16

Quels sont les arguments passés dans la principale méthode d'un programme en ligne de commande:Objective-c routine principale, ce qui est: int argc, const char * argv []

int main(int argc, const char * argv[]) 

ce qui est le premier int moyenne ?

Et quel est le deuxième paramètre, est-ce un tableau de caractères?

Comment l'utiliser?

En outre, quelle utilisation pratique est un type de projet de ligne de commande, autre que de l'utiliser pour apprendre obj-c, c'est-à-dire à pratiquer.

+16

@HyLian - Pas tout le monde vient d'un arrière-plan C ces jours-ci. :-) –

+1

@middaparka C'est le vrai problème! Les gens commencent à utiliser l'objectif-c sans avoir aucune idée de ce qu'est un pointeur ou simplement de ce que signifie argc. Est-ce le fond je pense. –

Répondre

25

argc signifie "argument count". Cela signifie combien d'arguments sont passés dans l'exécutable. argv signifie "argument values". C'est un pointeur vers un tableau de caractères. Ou pour y penser d'une autre manière, il s'agit d'un tableau de chaînes C (puisque les chaînes C ne sont que des tableaux de caractères).

Donc, si vous avez un programme "foo" et de l'exécuter comme ceci:

foo -bar baz -theAnswer 42 

Ensuite, dans votre fonction main(), argc sera 5 et argv sera:

argv[0] = "/full/path/to/foo"; 
argv[1] = "-bar"; 
argv[2] = "baz"; 
argv[3] = "-theAnswer"; 
argv[4] = "42"; 
2

Cette ligne principale provient de C et n'est pas spécifique à l'objectif-c. Argc vous donne le nombre d'arguments de ligne de commande passés à votre programme C. Argv est un tableau de chaînes C et contient les arguments de ligne de commande.

Vous les utiliseriez ainsi que le projet de ligne de commande à chaque fois que vous souhaitiez écrire un outil de ligne de commande ou un programme avec lequel vous interagissez depuis la ligne de commande.

3

Juste ajouter aux autres réponses - Objective-C cible à la fois OS X et iOS. Et bien qu'il n'y ait pas beaucoup de valeur dans les applications de ligne de commande iOS, le shell sur OS X est encore largement utilisé et il y a beaucoup de gens qui écrivent des outils en ligne de commande.

2

Comme wikipedia (et toute autre source dit):

int main(void)

int main(int argc, char *argv[])

Les paramètres argc, nombre d'arguments et argv, vecteur d'argument, donnent respectivement le nombre et la valeur de ce programme arguments de ligne de commande. Les noms de argc et argv peuvent être n'importe quel identificateur valide dans C, mais il est courant d'utiliser ces noms. En C++, les noms doivent être pris littéralement, et le "void" dans la liste des paramètres doit être omis, si la conformité stricte est souhaitée. D'autres formats dépendants de la plate-forme sont également autorisés par les normes C et C++, sauf qu'en C++ le type de retour doit rester int; par exemple, Unix (mais pas POSIX.1) et Microsoft Windows ont un troisième argument donnant l'environnement du programme, sinon accessible par getenv dans stdlib.h:

int main(int argc, char **argv, char **envp)

5

Les paramètres à main() sont une convention unix pour accéder aux arguments donnés sur la ligne de commande lorsque votre programme est exécuté.Dans une application Cocoa, vous pouvez y accéder par l'ancienne méthode C, ou vous pouvez utiliser la méthode NSProcessInfo - arguments pour les obtenir dans un objet NSArray de NSString, ou utiliser NSUserDefaults pour les obtenir en tant que valeurs dans un dictionnaire.

0

En outre, quelle utilisation pratique est un type de projet de ligne de commande, autre que de l'utiliser pour apprendre obj-c, c'est-à-dire à pratiquer.

L'utilisation pratique crée un outil de ligne de commande en utilisant le code d'un cadre ou d'une application que vous avez écrit. Assistants, utilitaires, agents de lancement et démons, tous ces processus d'arrière-plan sont généralement implémentés en tant qu'outils de ligne de commande.

Questions connexes