Dev - C++ - Duda con una funcion

 
Vista:
Imágen de perfil de Dennis
Val: 106
Ha aumentado su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con una funcion

Publicado por Dennis (40 intervenciones) el 04/11/2020 14:17:53
Hola a todos y saludos.
Cuando programo por lo general creo esta función para ahorrarme tiempo.
1
2
3
void ls(){
   system("cls");
}
Quisiera saber si esta correcto o no en crearla y si le resta eficiencia a mi programa.
Gracias de antemano.
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

Duda con una funcion

Publicado por Nacho (181 intervenciones) el 04/11/2020 14:48:51
Restar, resta. Para no restar y ahorrar lo mejor es usar inline.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Dennis
Val: 106
Ha aumentado su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con una funcion

Publicado por Dennis (40 intervenciones) el 04/11/2020 14:53:42
Gracias pero no entiendo, esplique mejor por favor..
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

Duda con una funcion

Publicado por Nacho (181 intervenciones) el 04/11/2020 15:30:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void ls() {
    system("cls");
}
 
inline void lsinline() {
    system("cls");
}
 
ls();
     call        ls (0C410E1h)
 
lsinline();
 push        offset string "cls" (0FF6B30h)
 call        ebx

Ahí tenemos el código resultante de llamar a una función no inline y una inline. En la primera se hace un call a la función, con su empilado de parámetros si hubiera, praración de pila, despreparación de pila y ret. En el segundo se pega el gódigo de la función donde está la llamada, sin call. O sea, inline indica al compilador que cada llamada a la función deberá ser reemplazada por el cuerpo de esta función.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Dennis
Val: 106
Ha aumentado su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con una funcion

Publicado por Dennis (40 intervenciones) el 04/11/2020 15:34:22
Gracias ahora si entiendo...
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
sin imagen de perfil
Val: 331
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con una funcion

Publicado por Martín (145 intervenciones) el 04/11/2020 19:42:07
Yo te diría que usar una función para ahorra tiempo al tipear puede valer la peno o no, es más bien una cuestión de preferencia personal, pero en este caso me parece que no estás ahorrando mucho, pero ese no es el problema. Lo que no está nada bien es usar "system", que es tremendamente ineficiente para algo de tan poco valor como limpiar una consola.

system invoca al intérprete de comandos (en este caso de Windows), y debes invocar explícitamente a flush y cerrar cualquier flujo antes de invocarlo (https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/system-wsystem?view=msvc-160). Si se trata de "ahorrar tiempo al escribir", bueno, es una muy mala idea.

Por otro lado, ¿te has preguntado por qué necesitas limpiar la consola? Si es para que el usuario pueda ver la salida más cómodamente, replantéatelo, los programas de consola no tiene usuario. Si tu programa es para que lo esté viendo un usuario deberías usar la interfaz gráfica más habitual en el sistema operativo; si estás en Windows (que lo estás, porque si no no usarías cls) deberías usar ventanas, y si tu programa necesita ventanas te comento que no deberías usar C ni C++, no es para eso.

En resúmen:

- ¿Resta eficiencia a mi programa?
- Sí, claramente, invocar a system para limpiar una consola que nadie ve resta eficiencia.
- ¡Pero mi programa sí tiene usario!
- Deberías usar ventanas.
- ¡Es muy difícil y costoso usar ventanas en C++!
- No uses C++.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Dennis
Val: 106
Ha aumentado su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con una funcion

Publicado por Dennis (40 intervenciones) el 06/11/2020 14:18:25
Gracias pos sus consejos, no lo había visto desde ese punto de vista.
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

Duda con una funcion

Publicado por Tom (61 intervenciones) el 06/11/2020 15:10:05
Ya que usas win, la solución más directa es que mires en conio.h (Console IO, para mentes sucias).
Tienes una rutina clrscr() que es para esto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar