<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
El 13/07/10 13:07, Gustavo Adolfo Torres Ortega escribió:
<blockquote cite="mid:SNT138-w3080B33664691D61A78CBCAFB90@phx.gbl"
type="cite">
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
Buenas a todos!<br>
<br>
El motivo por el cual escribo en esta ocasión, es para conocer
cómo puedo hacer que mi código sea portable tanto en windows como
en sistemas Linux.<br>
Tengo entendido que lo puedo lograr usando las directivas del
precompilador y macros, pero los ejemplos que he visto se me hacen
muy confusos.<br>
<br>
Concretamente, deseo saber esto porque hay funciones como
system("CLS") que en Unix tendría que escribir como
system("clear"), o tal vez system("PAUSE"), que en Linux no tengo
que ponerlo.<br>
<br>
#include <stdio.h><br>
<br>
int main()<br>
{<br>
printf("Hola mundo");<br>
system("PAUSE");<br>
system("CLS");<br>
printf("Termina el programa");<br>
system("PAUSE);<br>
return 0;<br>
}<br>
<br>
El código anterior funciona bien en windows, pero si lo compilo
para Linux (yo uso ubuntu) tengo que quitar las líneas de
system("PAUSE") y modificar "CLS" por "CLEAR".<br>
<br>
Alguien podría mostrarme un ejemplo de cómo hacerlo?<br>
<br>
De antemano, muchas gracias :]<br>
</blockquote>
Puedes hacer<br>
<br>
int main()<br>
<pre wrap="">{
printf("Hola mundo");
system("PAUSE");
#ifdef _WIN32
system("CLS");
#else
system("clear");
#endif
printf("Termina el programa");
system("PAUSE);
return 0;
}<a class="moz-txt-link-freetext" href="http://webpy.org/">
</a></pre>
<br>
Pero como es un poco feo meter directivas de preprocesador por en
medio del programa, podemos tomar la idea de BorrarPantalla() de
Reignerok:<br>
<br>
<br>
<pre wrap="">#ifdef _WIN32</pre>
#define BorrarPantalla() system("CLS");
<br>
#else<br>
#define BorrarPantalla() system("clear");<br>
#endif<br>
<br>
int main()<br>
<pre wrap="">{
printf("Hola mundo");
system("PAUSE");
BorrarPantalla();
printf("Termina el programa");
system("PAUSE);
return 0;
}</pre>
<br>
También podrías meter todos los defines condicionales dentro de un
.h que incluyas al principio de tus programs.<br>
<br>
Respecto a system("pause"), puedes esperar a con getchar() o
cin.get(), si el buffer de entrada está vacío.<br>
Por eso Leonardo sugería hacer fflush(stdin);, lo cual sólo funciona
con Windows. Bajo Linux, hay que hacer __fpurge(stdio);<br>
e incluir la cabecera #include <stdio_ext.h><br>
<br>
</body>
</html>