elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre portabilidad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre portabilidad  (Leído 2,626 veces)
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Duda sobre portabilidad
« en: 2 Julio 2013, 01:44 am »

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.


« Última modificación: 2 Julio 2013, 02:00 am por ivancea96 » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda sobre portabilidad
« Respuesta #1 en: 2 Julio 2013, 02:22 am »

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.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda sobre portabilidad
« Respuesta #2 en: 2 Julio 2013, 02:41 am »

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
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda sobre portabilidad
« Respuesta #3 en: 2 Julio 2013, 02:52 am »

Está tirado:

Código
  1. void LimpiarPantalla()
  2. {
  3.    #ifdef _WIN32
  4.    system("CLS");
  5.    #else
  6.    system("clear");
  7.    #endif
  8. }

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:
Código
  1. #define WINDOWS
  2.  
  3. void LimpiarPantalla()
  4. {
  5.    #ifdef WINDOWS
  6.    system("CLS");
  7.    #else
  8.    system("clear");
  9.    #endif
  10. }

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.
« Última modificación: 2 Julio 2013, 02:54 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda sobre portabilidad
« Respuesta #4 en: 2 Julio 2013, 08:36 am »

O bien, si eres más purista y no te gustan los condicionales del compilador en medio del código:

Código
  1. #ifdef _WIN32
  2. char* limpiar_pantalla_cmd = "CLS";
  3. #else
  4. char* limpiar_pantalla_cmd = "clear";
  5. #endif
  6.  
  7. void func( )
  8. {
  9.  
  10.  // ...
  11.  
  12.  system( limpiar_pantalla_cmd );
  13.  
  14.  // ...
  15.  
  16. }
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda sobre portabilidad
« Respuesta #5 en: 2 Julio 2013, 15:50 pm »

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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Portabilidad del WebBrowser
Programación Visual Basic
Lupin 5 4,393 Último mensaje 15 Agosto 2009, 14:22 pm
por xkiz ™
¿portabilidad del FileSystemObject?
Programación Visual Basic
Lupin 2 2,005 Último mensaje 27 Marzo 2010, 02:04 am
por Lupin
portabilidad de GNU assembler Gas
ASM
KandiZickZad 1 3,267 Último mensaje 18 Febrero 2011, 20:06 pm
por Eternal Idol
Cobrar por cancelar una portabilidad es “una cláusula abusiva”
Noticias
wolfbcn 0 1,863 Último mensaje 4 Mayo 2011, 14:06 pm
por wolfbcn
Así funciona la nueva portabilidad móvil en un día
Noticias
wolfbcn 0 1,405 Último mensaje 1 Junio 2012, 21:28 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines