Uno puede averiguar el sistema operativo en el que se ejecuta el programa con la ayuda de la programación en C. Esta información es muy útil para el caso en el que queremos construir un programa independiente de la plataforma. Para encontrar el sistema operativo (Sistema operativo), verificamos la macro definida por el compilador, por ejemplo, Windows con un sistema operativo de 32 bits tiene » _WIN32 » como macro, por lo que si la macro está definida, entonces el sistema en el que estamos trabajando es Windows con 32 bits. sistema operativo de bits. De manera similar, otro sistema operativo tiene una macro diferente definida. La lista de macros para algunos sistemas operativos populares es la siguiente:
No Señor. | Sistema operativo | Presente de macros | notas |
---|---|---|---|
1. | Windows 32 bits + 64 bits | _WIN32 | para todos los sistemas operativos Windows |
2. | Windows 64 bits | _WIN64 | Solo para ventanas de 64 bits |
3. | Manzana | __MANZANA__ | Para todos los sistemas operativos de Apple |
4. | Manzana | __MÁQUINA__ | alternativa a lo anterior |
5. | iOS integrado | TARGET_OS_EMBEDDED | incluir TargetConditionals.h |
6. | simulador de iOS | TARGET_IPHONE_SIMULATOR | incluir TargetConditionals.h |
7. | iPhone | TARGET_OS_IPHONE | incluir TargetConditionals.h |
8. | Mac OS | TARGET_OS_MAC | incluir TargetConditionals.h |
9. | Android | __ANDROIDE__ | subconjunto de linux |
10 | Sistema operativo basado en Unix | __unix__ | – |
11 | linux | __linux__ | subconjunto de unix |
12 | basado en POSIX | _POSIX_VERSIÓN | Ventanas con Cygwin |
13 | Solaris | __sol | – |
14 | Experiencia de usuario de HP | __hpux | – |
15. | BSD | BSD | todos los sabores de BSD |
dieciséis. | Libélula BSD | __Libélula__ | – |
17 | FreeBSD | __FreeBSD__ | – |
18 | NetBSD | __NetBSD__ | – |
19 | OpenBSD | __OpenBSD__ | – |
Nota:
Cabe señalar que las macros son válidas para GNU GCC y G++ y pueden variar para otros compiladores.
A continuación se muestra el programa para detectar en qué SO estamos trabajando:
C
// C program to detect Operating System #include <stdio.h> // Driver Code int main() { // Checking for windows OS with // _WIN32 macro #ifdef _WIN32 printf("Hey Geek it seems that" "you are working on a Windows OS.\n"); // Checking for mac OS with // __APPLE__ macro #elif __APPLE__ printf("Hey Geek it seems that you" "are working on a Mac OS.\n"); // Checking for linux OS with // __linux__ macro #elif __linux__ printf("Hey Geek it seems that you" "are working on a Linux OS.\n"); // Checking for iOS embedded OS with // TARGET_OS_EMBEDDED macro #elif TARGET_OS_EMBEDDED printf("Hey Geek it seems that you" "are working on an iOS embedded OS.\n"); // Checking for iOS simulator OS with // TARGET_IPHONE_SIMULATOR macro #elif TARGET_IPHONE_SIMULATOR printf("Hey Geek it seems that you" "are working on an iOS simulator OS.\n"); // Checking for iPhone OS with // TARGET_OS_IPHONE macro #elif TARGET_OS_IPHONE printf("Hey Geek it seems that you" "are working on an iPhone OS.\n"); // Checking for MAC OS with // TARGET_OS_MAC macro #elif TARGET_OS_MAC printf("Hey Geek it seems that you" "are working on a MAC OS.\n"); // Checking for Android OS with // __ANDROID__ macro #elif__ANDROID__ printf("Hey Geek it seems that you" "are working on an android OS.\n"); // Checking for unix OS with // __unix__ macro #elif __unix__ printf("Hey Geek it seems that you" "are working on a unix OS.\n"); // Checking for POSIX based OS with // _POSIX_VERSION macro #elif _POSIX_VERSION printf("Hey Geek it seems that you" "are working on a POSIX based OS.\n"); // Checking for Solaris OS with // __sun macro #elif __sun printf("Hey Geek it seems that you" "are working on a Solaris OS.\n"); // Checking for HP UX OS with // __hpux macro #elif __hpux printf("Hey Geek it seems that you" "are working on a HP UX OS.\n"); // Checking for BSD OS with // BSD macro #elif BSD printf("Hey Geek it seems that you" "are working on a Solaris OS.\n"); // Checking for DragonFly BSD OS with // __DragonFly__ macro #elif __DragonFly__ printf("Hey Geek it seems that you" "are working on a DragonFly BSD OS.\n"); // Checking for FreeBSD OS with // __FreeBSD__ macro #elif __FreeBSD__ printf("Hey Geek it seems that you" "are working on a FreeBSD OS.\n"); // Checking for Net BSD OS with // __NetBSD__ macro #elif __NetBSD__ printf("Hey Geek it seems that you" "are working on a Net BSD OS.\n"); // Checking for Open BSD OS with // __OpenBSD__ macro #elif __OpenBSD__ printf("Hey Geek it seems that you" "are working on an Open BSD OS.\n"); // If neither of them is present // then this is printed... #else printf("Sorry, the system are" "not listed above.\n"); #endif return 0; }
Producción:
A continuación se muestra la salida del programa anterior en un
Sistema operativo Windows
:
Del mismo modo, se puede averiguar el sistema operativo y establecer el código apropiado para el sistema.
Publicación traducida automáticamente
Artículo escrito por aditya_taparia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA