Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Mensaje iniciado por: Bomb-P en 23 Enero 2013, 08:13 AM

Título: Se puede usar la libreria windows.h en un programa para linux o mac?
Publicado por: Bomb-P en 23 Enero 2013, 08:13 AM
Lo necesito ya que windows.h lleva la funcion

Sleep(2000); //Retraso de 2 segundos
Título: Re: Se puede usar la libreria windows.h en un programa para linux o mac?
Publicado por: Khronos14 en 23 Enero 2013, 15:24 PM
No se puede utilizar, porque la librería Windows.h incluye los prototipos de las funciones que se van a enlazar con el linker, que a su vez van a llamar a las funciones de la API de Windows.

En Linux tienes la función usleep que hace básicamente lo mismo. Necesitas incluir la cabecera <unistd.h>.

http://linux.die.net/man/3/usleep

Saludos.
Título: Re: Se puede usar la libreria windows.h en un programa para linux o mac?
Publicado por: Bomb-P en 23 Enero 2013, 20:10 PM
Cita de: Khronos14 en 23 Enero 2013, 15:24 PM
No se puede utilizar, porque la librería Windows.h incluye los prototipos de las funciones que se van a enlazar con el linker, que a su vez van a llamar a las funciones de la API de Windows.

En Linux tienes la función usleep que hace básicamente lo mismo. Necesitas incluir la cabecera <unistd.h>.

http://linux.die.net/man/3/usleep

Saludos.
Muchas Gracias! xD me servira un monton.
Título: Re: Se puede usar la libreria windows.h en un programa para linux o mac?
Publicado por: 0xDani en 24 Enero 2013, 21:22 PM
Quiza te interese la compilacion condicional. Para este caso seria algo asi:


#ifdef _WIN32 /* Deberia estar definido en windows*/

#include <windows.h>
#define mySleep(x) Sleep(x);

#elif defined __unix__ /* Creo que es esta macro, deberia estar definida en sistemas Unix-like*/
#include <unistd.h>
#define mySleep(x) sleep(x);

#else  /* No sabemos donde estamos*/
#warning Missing sleep function

#endif

/* Aqui tu codigo donde puedes usar mySleep() sin miedo */
Título: Re: Se puede usar la libreria windows.h en un programa para linux o mac?
Publicado por: Turriano en 2 Febrero 2021, 17:03 PM
Cita de: Khronos14 en 23 Enero 2013, 15:24 PM
No se puede utilizar, porque la librería Windows.h incluye los prototipos de las funciones que se van a enlazar con el linker, que a su vez van a llamar a las funciones de la API de Windows.

En Linux tienes la función usleep que hace básicamente lo mismo. Necesitas incluir la cabecera <unistd.h>.

http://linux.die.net/man/3/usleep

Saludos.

Hola!
Yo necesitaba usar esa función para usar beep

¿Me podrías explicar sobre los pasos a seguir?
Gracias!