In C ++, qual è il metodo comunemente accettato per rendere un programma agnostico piattaforma? [chiuso]

0

Il modo in cui di solito lo faccio è creare una piattaforma namespace in Platform.h e ogni chiamata del sistema operativo è incapsulata da una funzione statica in questo spazio dei nomi. Quindi l'unico posto nell'intero codice base che sa quale sistema operativo viene utilizzato è Platform.cpp. È un buon modo per semplificare le cose? Ad esempio, quando chiamo Platform :: MessageBox (...), ciò che effettivamente accade è:

void Platform::MessageBox(...)
{
#ifdef(_WINDOWS)
....
#elif(_LINUX)
....
#elif(_MAC)
....
#endif
}
    
posta ulak blade 22.02.2014 - 18:51
fonte

2 risposte

3

Se non puoi utilizzare una libreria indipendente dalla piattaforma per allontanarti da te, allora l'opzione migliore è mantenere la complessità di indipendenza della piattaforma dalla logica principale dell'applicazione creando un wrapper per incapsulare la piattaforma codice.

Quando si implementa il wrapper, ci sono due approcci principali.

  1. Utilizza le macro del preprocessore come hai fatto nel codice di esempio nella domanda
  2. Utilizzare un file separato per ogni piattaforma con il codice per quella piattaforma. Quindi utilizzi il sistema di generazione per selezionare l'implementazione corretta per la piattaforma che stai creando.
risposta data 22.02.2014 - 19:32
fonte
0

Tendo a creare librerie specifiche per piattaforma in modo da avere codice comune in un progetto e tenendo tutto in un repository posso andare onlinux e tirare giù il progetto comune e compilare, inserendo la libreria di Linux e su windows a dll.

Ciò è dovuto al fatto che sono necessarie così tante librerie da includere su ogni piattaforma, quindi se uso directx su Windows e quelle librerie e opengl su Linux questo pattern aiuta.

    
risposta data 23.02.2014 - 03:17
fonte

Leggi altre domande sui tag