La CLI C ++ è un superset di C ++?
Domanda
Un compilatore C ++ CLI sarebbe in grado di compilare alcuni grandi set di classi C ++ senza modifiche?
La CLI C ++ è un superset di C ++?
Soluzione
tecnicamente no, ma a seconda di quanto è standard il codice C ++, probabilmente starai bene. quando entri nelle cose di Windows potresti incorrere in problemi. Ho compilato l'intero motore di gioco che usiamo al lavoro in C ++ / CLI una volta e ha funzionato bene. Un collega ha fatto lo stesso per tutti Mozilla e senza fortuna.
Altri suggerimenti
Secondo Wikipedia :
C ++ / CLI dovrebbe essere pensato come un linguaggio a sé stante (con un nuovo set di parole chiave, ad esempio), invece del C ++ gestito C ++ orientato al superset
Sono ancora nuovo con la mia curva di apprendimento su C ++ / CLI - ma ho avuto la stessa domanda me stesso, e quello che ho determinato finora è che C ++ / CLI è, come linguaggio, un superset di standard C ++.
Se non usi le estensioni CLI, il tuo codice C ++ finirà come codice non gestito nativo e dovrebbe essere essenzialmente lo stesso, ma compilato per IL CLR, anziché x86 nativo.
Una volta che inizi a utilizzare le estensioni della CLI (e inizi a cadere nell'uso di oggetti / handle / classi gestite), inizi a interagire più pesantemente con la piattaforma CLR sottostante. A quel punto, diventa essenzialmente una nuova "lingua", e dovrai separare il tuo pensiero tra il "non gestito" lato e il "gestito" lato.
C ++ / CLI non è un superset di C ++. Piuttosto è un sottoinsieme con aggiunte. PER ESEMPIO. C ++ / CLI non supporta l'ereditarietà multipla.
Angelo
Pagina 3 del libro di Marcus Heege "Expert C ++ / CLI.NET per programmatori Visual C ++":
C ++ / CLI è un set di estensioni creato per il linguaggio C ++ per beneficiare del servizi che un'implementazione del Offerte CLI.
E più in basso nella stessa pagina:
C ++ / CLI è un superset del linguaggio C ++.
Il suo eccellente libro è disponibile gratuitamente da qui .
Sono stato in grado di compilare l'intera libreria Qt (che è enorme) come C ++ / CLI con modifiche minori (principalmente nell'ambiente di build, ma ho anche corretto un bug nel codice sorgente di Qt)