Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Why Aret en 8 Marzo 2017, 23:44 pm



Título: Saber que SO tiene la maquina a trabajar
Publicado por: Why Aret en 8 Marzo 2017, 23:44 pm
buenas!, estoy programando una app en c pero quisiera saber el sistema operativo donde se ejecute la app antes de comenzar, alguno ya tuvo experiencia en esto?
seria de mucha ayuda ya que google por un buen rato, de antemano gracias!  :silbar:


Título: Re: Saber que SO tiene la maquina a trabajar
Publicado por: ivancea96 en 8 Marzo 2017, 23:58 pm
Si compilas para Windows, pues tendrás que compilar para Windows. Si compilas para Unix, pues lo mismo. Los programas compilados rara vez podrán ser ejecutados en múltiples sistemas operativos (salvando alguna excepción, como Wine)

Por tanto, una aplicación ya compilada tiene commo destino 1 sistema operativo genralmente.

Si vas a compilar para varios, entonces puedes usar directivas del preprocesador tipo:

Código
  1. #ifdef _WIN32
  2.    const char* SO = "Windows";
  3. #else
  4.    const char* SO = "Otro";
  5. #endif

Aquí tienes una lista de macros definidos para cada sistema operativo: https://sourceforge.net/p/predef/wiki/OperatingSystems/ (https://sourceforge.net/p/predef/wiki/OperatingSystems/)

Si bien no es estándar, en la mayoría de compiladores importantes los verás definidos.


Título: Re: Saber que SO tiene la maquina a trabajar
Publicado por: engel lex en 8 Marzo 2017, 23:59 pm
simple si es windows y el ejecutable está hecho para mac os o para linux no correrá, igual para los otros casos...

si estás en windows, tienes esto
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx (https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx)

si es linux algo de esto
http://stackoverflow.com/questions/6315666/c-get-linux-distribution-name-version (http://stackoverflow.com/questions/6315666/c-get-linux-distribution-name-version)