esatto, ho provato anche su linux adesso, il seguente codice:
codice:
#include <stdio.h>
#ifdef _WIN32
char* a = "WINDOWS\0";
#else
#ifdef linux
char* a = "LINUX\0";
#else
#error OS non supportato
#endif
#endif
int main() {
printf("%s\n", a);
return 0;
}
SU windows stampa WINDOWS, su linux LINUX.
Li dentro puoi pilotare la compilazione per includere gli header solo di win e solo di linux e poi astrarli con una nuova interfaccia che si adatta, ad esempio potresti fare un metodo con firma
"connetti(host, porta)", e il corpo si adatta tramite le direttive usando i file h del sistema ospite.
Un ultimo esempio che mi viene in mente è quello per pulire lo schermo:
codice:
#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
const char* pulisci = "cls";
#else
#ifdef linux
const char* pulisci = "clear";
#else
#error OS non supportato
#endif
#endif
int main() {
printf("Ciao");
system(pulisci);
return 0;
}