sistema sencillo programación programacion operativo lenguaje hacer como caracteristicas aplicaciones c++ c operating-system cross-platform

sencillo - lenguaje de programacion c++



Autodetección del sistema operativo en C/C++ (2)

Existe esta lista práctica (¡guárdela en el disco!). Lista de macros de compilador predefinidos .

También le sugiero que, si tiene como objetivo múltiples plataformas, busque una biblioteca que ya esté disponible para ellos.

¿Hay alguna forma de autodetectar su sistema operativo usando su código C / C ++? Necesito esto para ejecutar algún código de plataforma cruzada para Linux, Windows, incluso en una Raspberry Pi. Estoy tratando de autodetectar el sistema operativo para no ponerme en la situación de tener que pedir el sistema operativo que se ejecuta en la máquina como entrada.

Estaba pensando en un truco como verificar la estructura del sistema de archivos o algo así, no sé si estoy o no en algo.


He utilizado el código siguiente en pasado para verificar entre Linux y Windows

#include<stdio.h> int main(int argc, char *argv[]) { #ifdef _WIN32 printf("in Windows"); #endif #ifdef linux printf("In Linux"); #endif return 0; }

Por lo general, todas las herramientas tienen sus propias macros predefinidas, por lo que debe usar esas macros para detectar qué sistema operativo es este.

Lista de tales macros predefinidas.

http://sourceforge.net/p/predef/wiki/OperatingSystems/

Sí, como nota al margen, Aquí la detección del sistema operativo se realiza utilizando macros de tiempo de compilación. Entonces, de acuerdo con la cadena de herramientas, la definición de macro respectiva irá en compilación.

Para detectar la versión del sistema operativo en tiempo de ejecución , como en Java, lo hacemos

System.getProperty("os.name")

De la misma manera en C / C ++ no tenemos ninguna API.

En los sistemas POSIX que usan '' uname '', podemos obtener el nombre del sistema operativo.