Quali risorse esistono per aiutare a scrivere codice C/C++ che funzioni su più piattaforme e compilatori? Per esempio, mi trovo regolarmente a fare domande come:Risorse per lo sviluppo C/C++ multipiattaforma
- Quali macro di preprocessore vengono automaticamente definite in vari compilatori e ambienti? (Ad esempio
__GCC__
,WIN32
,__WIN32__
,__CYGWIN__
) - Quali versioni di compilatori e librerie standard supportano relativamente nuove funzioni "standard" (ad esempio, i C99 lunghe doppie funzioni trigonometriche sinl(), cosl(), ...)
- Quali funzioni sono disponibili su piattaforme diverse per eseguire compiti tipici, quando non sembra esistere una singola funzione portatile? (Ad esempio, ricevendo il tempo corrente con inferiori al secondo precisione)
Mi capita spesso di scrivere codice che dovrebbe compilare sotto Linux/GCC, Cygwin, mingw32, e Visual Studio, e ho spesso dovuto confrontarsi da più fonti (Linux man pages, MSDN, doc del compilatore) per ottenere le informazioni di cui ho bisogno. Questo deve essere un problema in cui gli sviluppatori si imbattono continuamente: ci sono risorse che compilano queste informazioni in un riferimento facilmente digeribile?
(Per questa domanda non sono particolarmente interessato a librerie cross-platform come wxWidgets o spinta. Sono più interessato a risorse o tecniche che avrebbero aiutato qualcuno scrivere la propria libreria multi-piattaforma o di un programma.)
MODIFICA: Questo è un esempio del tipo di pagina che sto cercando: http://predef.sourceforge.net/precomp.html. Una bella panoramica di vari compilatori/ambienti e dei macro del preprocessore che possono essere utilizzati per identificarli. Sarebbe bello trovare una risorsa simile che confrontava funzioni quasi equivalenti tra piattaforme (come gmtime_r() o ftime() in Linux vs _gmtime_s() o _ftime() in Windows) quando non esiste alcuna funzione comune.
Come sta usando boost e wxWidgets non è una strategia per la scrittura di codice cross-platform compatibile? È come chiedere qualcosa che assomiglia all'uva ma non è tutto un "grapie". – Kieveli