Yo programo C++ en Windows 7. Programo en consola, principalmente porque no se mucho visual ni de API's xD
La duda es...
Si, programando en consola, cambio los -system("cls");- y -system("pause");- (supongo que una mala costumbre mía), y pongo comandos de la librería estandar, ¿sería portable a otros Windows, Unix, Apple, y diversos sistemas?
EDITO: Busco la forma de borrar la pantalla de consola sin usar system("cls"), clrscr(), ni escribir 100 saltos de linea.
Cualquier función de la estándar es portable a cualquier sistema.
cin.get(); es un sustituto de pause. De limpiar no conozco ninguno, aunque puedes utilizar Compilación Condicional.
Mm gracias amchacon. Echaré un vistazo a la compilación condicional.
Mejor dicho, buscaré alguna guia sobre eso, tengo que echarle un vistazo a fondo, que nunca me paré mucho. xD
Está tirado:
void LimpiarPantalla()
{
#ifdef _WIN32
system("CLS");
#else
system("clear");
#endif
}
Esto se interpetra así: "Sí estás en una plataforma Windows, compila este código, si no lo estás compila este otro".
Puedes ver los #define de los distintos sistemas operativos aquí:
http://sourceforge.net/p/predef/wiki/OperatingSystems/
Aunque nada te impide a crearte los tuyos propios:
#define WINDOWS
void LimpiarPantalla()
{
#ifdef WINDOWS
system("CLS");
#else
system("clear");
#endif
}
Cuando no estemos en Windows, quitamos el define y ya está.
O bien, en vez de poner el #define en el código nos vamos a project -> build options -> #defines y ponemos: WINDOWS.
Puede ser incluso más interesante crear dos opciones de construcción: Release Windows y Release Linux. En cada una ponemos nuestro #define correspondiente.
O bien, si eres más purista y no te gustan los condicionales del compilador en medio del código:
#ifdef _WIN32
char* limpiar_pantalla_cmd = "CLS";
#else
char* limpiar_pantalla_cmd = "clear";
#endif
void func( )
{
// ...
system( limpiar_pantalla_cmd );
// ...
}
Muchas gracias amchacon, creo que eso venía a ser lo que buscaba.
Eferion, gracias también, ya que tengo varios system("cls"), y ayudará bastante.