Escribir código independiente del sistema operativo en C/C++

Un programa que puede interactuar con el sistema operativo independientemente del sistema operativo en el que se ejecute. En palabras simples, podemos decir que un programa, que puede ejecutarse en una computadora sin depender del sistema operativo.

¿Cómo escribir un programa de utilidad que enumere todos los contenidos del directorio independientemente del sistema operativo?

La mayoría de los compiladores de C/C++ definen macros que se pueden usar para detectar sistemas operativos. Por ejemplo, en GCC, las siguientes son macros comunes. 

_WIN32 : Defined for both 32 bit and 64 bit windows OS.
_WIN64 : Defined for 64 bit windows OS.

unix, __unix, __unix__ : Defined in UNIX OS

__APPLE__, __MACH__ : Defined in Mac OS

En Windows, usamos dir call para enumerar todos los directorios, y en la mayoría de los otros sistemas operativos se usa «ls». A continuación se muestra una implementación simple de C++ para enumerar directorios de carpetas independientemente del sistema operativo.

C++

// C++ program to list all directories.
#include <bits/stdc++.h>
using namespace std;
int main()
{
#ifdef _WIN32
    system("dir");
#else
    system("ls");
#endif
    return 0;
}

C

// C program to list all directories.
#include <stdio.h>
  
int main()
{
#ifdef _WIN32
    system("dir");
#else
    system("ls");
#endif
    return 0;
}

Producción:

bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
run
sbin
srv
sys
tmp
usr
var

El código independiente del sistema operativo anterior es totalmente diferente de la independencia de la plataforma de Java. En Java, hay un código de byte intermedio que es una forma muy limpia de manejar las dependencias de la plataforma. Aquí tenemos que recordar las macros específicas del compilador y escribir el código usando torpes #ifdef y #else, y lo más importante, necesitamos volver a compilar el código para cada sistema operativo.

Este artículo es una contribución de Shubham Agrawal . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *