Come risultato del mio previousquestions Mi sono chiesto: è utile impostare un'interfaccia C++ per un sistema di plugin? I seguenti punti parlano contro di essa:Perché dovrei configurare un'interfaccia plugin in C++ invece di c
- Nessun comune ABI tra i diversi compilatori e le loro versioni, nessun layout comune degli oggetti in memoria
- Nessun classe di esportazione diretta. Devi esportare fabbriche e distruttori. I problemi sorgono se gli oggetti sono trattenuti da altri oggetti che solo loro sono
delete
, ad esempio puntatori intelligenti. - diverse implementazioni di STL, non si può passare un
std::list<T>
al plugin - diverse versioni delle librerie utilizzate come Boost
Se vi trattenervi alle restanti parti del linguaggio C++ si quasi fine con il "sottoinsieme C". Ci sono dei punti che parlano dell'uso del C++? In che modo il Qt-Toolkit risolve i problemi citati?
Nota: Mi riferisco principalmente al sistema Linux. Tuttavia sono interessato a soluzioni su altre piattaforme.
Domanda aggiuntiva: quali sono i problemi che utilizzano un'interfaccia C? Il layout di memoria di struct
s? Quali parti della lingua di C dovrebbero essere evitate?
Anche lo standard C non specifica un ABI. In effetti, tutti i problemi di cui ti lamenti possono essere applicati a C tanto quanto a C++. –
Sì, vale la pena notare che lo standard è generalmente impostato dal sistema operativo, e può o non può avere nulla a che fare con ciò che fanno i compilatori C. Su Windows è stdcall. –
@Neil. Lo standard C ha un ABI ben definito. Questo è il motivo per cui C è il COLLA tra tante altre lingue. –