smtux ha scritto:non è che voglio rimanere sul generico ... la mia era una domanda interlocutoria.
Supponiamo che voglia creare un'applicazione console per trasmettere un input inviato da un utente tramite tastiera attraverso una seriale.
Questo programma lo vorrei scrivere compatibile per i diversi sistemi operativi ed eventualmente se sulla macchina win è installato mingw32 anche con lui.
che dici?
Per me non hai ben chiara la situazione...
Andiamo per punti:
1) Input da tastiera. Scordati di cavartela con una banale getchar o scanf. Senza entrare nel merito di sistemi operativi differenti, le librerie dei compilatori le implementano in modo diverso a seconda del compilatore (gcc, mingw, turboc++, visual c++...). Percui dovresti studiarti i vari casi e creare delle macro dentro dei blocchi condizionali per il preprocessore (#ifdef...) che implementino la funzione che desideri appoggiandosi a ciò che è disponibile indipendentemente dall'ambiente di sviluppo.
2) Output su porta seriale. Stesso discorso della tastiera. In più, sistemi operativi diversi vincolano in modo diverso l'accesso alle periferiche. Mentre magari su Linux ti è possibile una scrittura diretta su una porta seriale (con una write magari), in Windows NT/2000/XP (Vista non lo so) non è possibile, perchè l'output diretto su periferiche è bloccato.
3) Visti i problemi 1 e 2, sarebbe il caso di cercare librerie già fatte che forniscano le funzioni richieste. Naturalmente, per compilare il programma su sistemi diversi, dovrai avere le librerie compilate per quel sistema (ovvero dipendenze in più)...
4) Ma devi proprio scrivere un programma portabile in C/C++? Non puoi usare Java, Python etc., che sono nati multipiattaforma apposta per non avere questi problemi?