2011-01-01 20 views
16

¿Cuáles son los argumentos que se pasan al método principal de un programa de línea de comandos:Objetivo-c rutina principal, lo que es: int argc, const char * argv []

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

lo que es el primer medio int ?

¿Y cuál es el segundo parámetro, es que una serie de caracteres?

¿Cómo podría uno usar estos?

Además, qué uso práctico es un tipo de proyecto de línea de comandos, aparte de usarlo para aprender obj-c, es decir, para practicar.

+16

@HyLian - No todo el mundo viene de un fondo C estos días. :-) –

+1

@middaparka ¡Este es el verdadero problema! La gente comienza a utilizar Objective-C sin tener idea de qué es un puntero o simplemente qué significa argc. Es el fondo, creo. –

Respuesta

25

argc significa "número de argumentos". Significa cuántos argumentos se pasan al ejecutable. argv significa "valores de argumento". Es un puntero a una matriz de caracteres. O para pensarlo de otra manera, es una matriz de cadenas C (ya que las cadenas C son solo matrices de caracteres).

Así que si usted tiene un programa de "foo" y ejecuta así:

foo -bar baz -theAnswer 42 

Luego, en su función de main(), argc habrá 5, y argv habrá:

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

Esa principal es de C y no específica de objetivo-c. Argc le da la cantidad de argumentos de línea de comando pasados ​​a su programa C. Argv es una matriz de cadenas C y contiene los argumentos de la línea de comandos.

Los usarías junto con el proyecto de la línea de comandos cada vez que quisieras escribir una herramienta de línea de comandos o un programa con el que interactúas desde la línea de comandos.

3

Justo para agregar a las otras respuestas: Objective-C se dirige tanto a OS X como a iOS. Y aunque no hay mucho valor en las aplicaciones de línea de comandos de iOS, el shell en OS X todavía se usa ampliamente y hay mucha gente escribiendo herramientas de línea de comandos.

2

Como wikipedia (y cualquier otra fuente dice):

int main(void)

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

Los parámetros argc, número del argumento, y argv, el argumento del vector, dar, respectivamente, el número y el valor del programa de argumentos de línea de comandos. Los nombres de argc y argv pueden ser cualquier identificador válido en C, pero es una convención común utilizar estos nombres. En C++, los nombres deben tomarse literalmente, y se debe omitir el "void" en la lista de parámetros, si se desea una conformidad estricta. Los estándares C y C++ también permiten otros formatos dependientes de la plataforma, excepto que en C++ el tipo de retorno debe permanecer int; por ejemplo, Unix (aunque no POSIX.1) y Microsoft Windows tienen un tercer argumento que da el entorno del programa, de lo contrario puede acceder a través getenv en stdlib.h:

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

5

Los parámetros a main() son una convención UNIX para accediendo a los argumentos dados en la línea de comando cuando se ejecuta su programa.En una aplicación Cocoa, puede acceder a ellos de la manera normal C antigua, o puede usar el método NSProcessInfo - arguments para obtenerlos en un NSArray de NSString objetos, o use NSUserDefaults para obtenerlos como valores en un diccionario.

0

Además, qué uso práctico es un tipo de proyecto de línea de comandos, aparte de usarlo para aprender obj-c, es decir, para practicar.

El uso práctico es crear una herramienta de línea de comandos utilizando el código de un Framework o Aplicación que haya escrito. Ayudantes, utilidades, agentes de lanzamiento y daemons, todos estos procesos en segundo plano se implementan típicamente como herramientas de línea de comandos.