¡Buenas a todos!
Estoy intentado hacer una funcion y ni si quiera soy capaz de declararla...
Esta es la definicion de la variables que luego le voy a pasar a mi funcion:
const char orden;
int *backgr;
int IDEntrada; //Posible redireccion de entreda a traves (pipes)
int IDSalida; //Posible redireccion de salida a traves (pipes)
char ** ArrayParser; //Array para alamacenar la salida de la orden parser_orden
y yo estoy intentado declarar la funcion asi....
char **parser_orden(const char *orden, int &IDEntrada, int &IDSalida,int *backgr) {
return orden;
}
y no me compila....me dice que orden no esta declardo....
¿Alguna idea?
¡Un saludo!
y todo el codigo desde como llamas, hasta la variable que resibe el retorno?
y c++ es bien estricto si decis que vas a devolver un puntero a puntero, tenes que devolver un puntero a puntero, no un puntero nada mas
¡Buenas RHL!
Lo del return ya me suponia que iba a estar mal...pero bueno....el codigo de lo que hace la funcion creo que lo puedo hacer....
Solo necesito hacer la declaracion....pero bueno, aqui te dejo algo mas de codigo....
char **parser_orden(const char *orden, int &IDEntrada, int &IDSalida,int *backgr) {
return orden;
}
void ejecutar_orden(const char *orden, int *backgr) {
//Se encarga de ejecutar una orden
int IDEntrada; //Posible redireccion de entreda a traves (pipes)
int IDSalida; //Posible redireccion de salida a traves (pipes)
char ** ArrayParser; //Array para alamacenar la salida de la orden parser_orden
int result;
int MAXPATHLEN=100;
bool ok=false;
char path[MAXPATHLEN];
ArrayParser = parser_orden(orden, &IDEntrada, &IDSalida, backgr);
//Convierte la entrada de una orden en un array charr **, elimiando los espacios
//backgr devuelve 1 si encuentra el simbolo &
.
.
.
.
Gracias, un saludo.
EI: juntando mensajes.
Bueno, he conseguido mejorar algo...
char **parser_orden(const char *orden, int *IDEntrada, int *IDSalida,int *backgr) {
char **ord=*orden;
return ord;
}
Ahora la declaracion es correcta, pero me da error en la asignacion porque no hago un cast.....
¿Cual es el cast que debo poner?
Lo que estás haciendo en dicha asignación es asignarle a un puntero de puntero de char, un char.
La variable orden es un puntero a char, por ende (*orden) es un char. Eso lo estás asignando a un puntero a puntero a char ==> La asignación no es correcta.
Vi todo el hilo muy por arriba, pero si intentas castear dicha asignación entonces
char** ord = (char**)orden;
o prueba con:
char** ord = &orden;
¡Gracias Ferno!
La opcion:
char** ord = &orden;
ya la habia probado y no funciona
Pero la opcion:
char** ord = (char**)orden;
si que funciona jeje
Un saludo.