2012-02-14 20 views
6

Mi sento sempre un dolore quando passo da C# o da Python a C++ e incontro la separazione .h e .cpp.Uno strumento per separare automaticamente intestazione e implementazione C++

Quindi ho pensato che forse c'è uno strumento che in fase di pre-compilazione può prendere l'intestazione (o file con qualche estensione speciale) e dividerlo in .h e .cpp?

Quindi, se il file originale in questo modo:

class MyClass 
{ 
public: 

    void HaHaHa() 
    { 
     //some logic 
    } 
} 

E un risultato sarebbe come .he cpp file:

//.h 

class MyClass 
{ 
public: 

    void HaHaHa(); 
} 

// .cpp 

#include "MyClass.h" 

void MyClass::HaHaHa() 
{ 
    //some logic 
} 

Alcuni googling non si è presentato al pronto per l'uso strumenti . Ma sono abbastanza sicuro che non è una nuova idea e tali strumenti dovrebbero esistere.

P.S. È noto che Visual Assist X e VIM dispongono di strumenti per gestire la separazione di .h e .cpp con meno dolore. Ma sto chiedendo la possibilità di avere un codice in un file e separarlo automaticamente come parte del processo di compilazione.

+2

E perché non inserire tutto il codice nei file h? Compilazioni lente? –

+0

I moduli saranno presto (o successivi) in C++, si veda: http://stackoverflow.com/questions/3596147/modules-in-c0x questo lo risolverà sperabilmente. – tauran

+2

"Compilazioni lente" - come esempio. Parser lenti di autocomplition è anche peggio. O a volte uno scrive una libreria e non vuole che sia "open source". In generale, C++ è progettato per avere questa separazione. In questo punto di vista avere tale strumento è una soluzione molto chiara. – MajesticRa

risposta

4

Questo strumento può aiutare: http://www.lazycplusplus.com/

+0

Grazie! Sembra davvero quello che stavo chiedendo! Ora è il momento di controllarlo in azione ... – MajesticRa

+0

Dato che il parser è stato fatto a mano, sono scettico sulla sua capacità di analizzare le dichiarazioni C++ reali: modelli, tipi di funzioni, ... –

+0

hai provato? – vulkanino

2

Penso che si sta andando su di esso indietro: si desidera scrivere il file di intestazione , senza le implementazioni, prima di scrivere il codice. Che cosa sarebbe essere bello è uno strumento che dovrebbe leggere il file di intestazione e generare il codice di struttura per l'implementazione: con namespace, classi nidificate e tali, solo i wrapper possono essere abbastanza dettagliati. Ma il più vicino che ho visto è Rational Rose, che inizia con un diagramma ULM (altamente annotato), e genera sia l'intestazione che il file di prova dell'implementazione. È uno strumento molto bello — Lo uso ogni volta che è disponibile — ma è un po 'caro per l'utente domestico e probabilmente anche per le piccole aziende .

Problemi correlati