muy bien, pero a nosotros nos interesa el código no el ejecutable :3
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: eferion en 10 Julio 2013, 17:24 PMjeje mucha razón, y si, me queda claro todo, grac
jejeje
Tu piensa que si existiesen funciones estándar para hacer todo, el código sería siempre perfectamente portable y quizás no harían falta librerías como la tuya...
... pero la realidad siempre es más cruda, cada sistema operativo tiene sus propias llamadas al sistema, lo que hace que las APIs sean diferentes y esto a su vez conlleva la amargura de saber que es complicado hacer aplicaciones completas que sean portables... salvo que uses librerías portables, como Qt... o la tuya si llegara el caso.
Al final estas librerías tienen por debajo una programación específica para cada arquitectura y separan los elementos específicos con directivas del precompilador ( que es lo que tu has descubierto hoy ).
El problema de usar directivas de precompilador es que dichas directivas se ejecutan antes de que el código pase al compilador, por lo que el compilador va a crear una solución específica para la arquitectura sobre la que esté corriendo... esto quiere decir en cristiano que el código resultante de una compilación no es portable.
Para que el código sea realmente portable tienes que distribuir los fuentes y es responsabilidad de cada usuario el compilar tu librería en su sistema para obtener un código que funcione correctamente en su máquina.
No se si me he explicado con claridad. Si tienes dudas pregunta.
Cita de: eferion en 10 Julio 2013, 16:28 PMusando funciones estándar pero ahora me doy cuenta de que no existen para cualquier cosa, y para las que no existen lo haré como me dicen
Y entonces como estabas haciendo la librería portable??
Cita de: amchacon en 10 Julio 2013, 14:48 PM
¿Sabes lo que es la compilación condicional?
Te hago un ejemplo (limpiando la consola):
void Limpiar()
{
#ifdef _WIN32
system("CLS"); // Windows version
#else
system("clear"); // Linux version
#endif
}
Si estamos en un Windows, el compilador cogerá la primera expresión. Si no estamos en un Windows cogerá la segunda expresión.
Puedes consulta la lista entera de macros aquí:
http://sourceforge.net/p/predef/wiki/OperatingSystems/
Cita de: eferion en 10 Julio 2013, 14:47 PMPues seguiré buscando, aunque me he dado cuenta que para esto de multiplataforma, más que buscar funciones TU las tienes que hacer xD
Yo creo que sí es posible sacar una metodología común y abstraer al usuario de la arquitectura que hay por debajo.
Tu piensa que hacer un sistema multiplataforma no siempre va a ser encontrar dos funciones que hacen lo mismo, con los mismos parámetros y preparar un wrapper para encapsularlo... la multiplataforma es generalmente más complicada y exige un estudio mayor.
Cita de: eferion en 10 Julio 2013, 12:47 PMno es tanto la resolución del monitor, si no mas bien el tamaño de la terminal en linux o cmd en windows, por lo que no he encontrado la forma de saber el tamaño de cada una con un mismo comando para ambas plataformas, he tenido el mismo problema con los colores. creo que lo mejor seria sacar una versión para windows y otra para linux, cada una con sus diferentes códigos pero que la librería logre hacer lo mismo en ambos sistemas
Es demasiado complicado poder sacar en multiplataforma las resoluciones disponibles para el monitor que se esté usando??
Se supone que si haces una aplicación la idea es que se vea bien en cualquier equipo, si no eres capaz de sacar las resoluciones sabrás que tu aplicación se ve bien en tu máquina, pero en el resto...
Cita de: eferion en 9 Julio 2013, 17:09 PMPensaba hacerla para C, pero sólo fue en un inicio, ahora tendré que cambiarlo a clases
Si pensabas hacerla compatible con c la cagaste al usar la clase string en la interfaz ...
También puedes revertirlo y usar un array de char en vez de la clase string
Cita de: eferion en 9 Julio 2013, 16:56 PMooo tienes mucha razón, en un principio pensé hacerla también para C no sólo para C++ y por eso no lo hice así, pero seguiré tu consejo, en la próxima versión tendrá muchos cambios xD
También he visto que la librería está pensada para ser utilizada con c++... no te sale más a cuenta en este caso agrupar las funciones y presentarlas encapsuladas en clases ??
creo que el manejo entonces sería muchísimo más intuitivo a la par de sencillo.
No se, se me ocurre quizas un código tal que:
ventana.Clean( );
ventana.DrawRect( rect1 );
ventana.DrawPoint( point1 );
random.NewSeed( );
int number = random.GetRandom( 0, 20 );
En vez de estar llamando una y otra vez a funciones inconexas.