C/Visual C - problemas con argumentos y funciones

 
Vista:

problemas con argumentos y funciones

Publicado por Dimus (22 intervenciones) el 20/10/2002 15:33:59
Buenas.
Tengo un problema a la hora de usar los argumentos con funciones "caseras". Cuando intento compilar el siguiente programa me da un error, que es el siguiente:

In function `funcion':
12: `argc' undeclared (first use in this function)
12: (Each undeclared identifier is reported only once
12: for each function it appears in.)
13: `argv' undeclared (first use in this function)

¿como podria usar argv[0] y argc usando funcion()?
Muchas gracias a todos y un saludo.

#include <stdio.h>

void funcion(void);

int main(int argc,char *argv[])
{
funcion();
return 0;
}

void funcion(void){
printf("en total tienes %i argumentos\n",argc);
printf("y el programa se llama: %s\n",argv[0]);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas con argumentos y funciones

Publicado por Paco (2 intervenciones) el 20/10/2002 20:26:20
//no lo he probado pero pienso que si fucionaria .
//sino funciona prueba a pasarle los argumentos a la funcion
int main(int argc,char *argv[])
{
int arg1=argc;
char *arg2=argv[];
funcion();
return 0;
}

void funcion(void){
printf(\"en total tienes %i argumentos\\n\",arg1);
printf(\"y el programa se llama: %s\\n\",arg2[0]);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con argumentos y funciones

Publicado por Googol (255 intervenciones) el 20/10/2002 22:13:43
:-m
El problema es que los parámetros y las variables locales son sólo accesibles desde la función donde se reciben o se declaran. Es decir, desde main(...) puedes acceder a los parámetros, pero desde funcion() sólo puedes acceder a las variables _globales_ del programa, o a las variables locales que declares dentro de "funcion", pero no a argc o argv, porque son parámetros de otra función.
La solución de Paco funciona si declaras a arg1 y a arg2 como variables _globales_, accesibles desde cualquier sitio.
Otra posibilidad (quizá más "limpia" a nivel de programación) es pasar ambos valores como parámetros:
int main(int argc, char* argv[]) {
funcion(argc, argv);
return 0;
}
void funcion(int numParametros, char* parametros) {
printf("En total tienes %d argumentos\n", numParametros);
printf("y el programa se llama %s\n", parametros[0]);
}

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con argumentos y funciones

Publicado por Oliver++ (339 intervenciones) el 22/10/2002 14:55:53
la visibilidad de las variables declaradas como argumentos de main no son visibles en funcion(void), deberas pasarlas como parametros. En tu caso, como no vas a cambiar su valor pasalas como referencia constante.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar