2013-01-07 11 views
6

Come il processo di compilazione (compilazione e collegamento) del codice sorgente in D differisce da C/C++ soprattutto per quanto riguarda le funzioni inline, il sistema di moduli di D's (anziché le intestazioni) e gli strumenti di compilazione. Come vengono riutilizzate le istanze dei modelli in D?D Processo di creazione

+1

Immagino che le istanze dei template vengano riutilizzate in D nello stesso modo in cui i template extern funzionano in C++ 11. Questo è tutto ciò che posso contribuire a questa discussione. –

+0

Credo in una compilazione di file multipli, l'istanziazione dei modelli viene eseguita una sola volta quindi archiviata in uno dei file oggetto generato. Ma non sono abbastanza sicuro di scrivere una risposta. Quando si compila in questo modo, le funzioni inline superano sempre i limiti dei moduli, come farebbero se venisse utilizzata la generazione del codice link-time in C++. A PARER MIO! – ponce

+0

@ponce non ci sono link time code gen attualmente solo qualche ottimizzazione –

risposta

2

non differisce tanto, ogni modulo viene compilato al proprio file obj che poi viene collegata insieme che IIRC non è molto diverso da C/C++ processo

la differenza principale tuttavia si trovano dal fatto che le importazioni sono simbolica invece di tutto il file di C #include che elimina la necessità di headerfiles (se l'opzione per i file .di headerlike è lì per le API closed source)

i modelli infatti devono essere incluse nei file disponibili per il compilatore però (come hanno bisogno di essere nell'intestazione per C++)