2012-02-14 12 views
6

Siempre me duele cuando cambio de C# o Python a C++ y me encuentro con la separación .h y .cpp.Una herramienta para separar automáticamente el encabezado C++ y la implementación

Así que pensé que tal vez hay una herramienta que en el paso de compilación previa puede tomar el encabezado (o archivo con alguna extensión especial) y dividirlo en .h y .cpp?

Así que si archivo original como esto:

class MyClass 
{ 
public: 

    void HaHaHa() 
    { 
     //some logic 
    } 
} 

Y el resultado sería tan .hy .cpp archivos:

//.h 

class MyClass 
{ 
public: 

    void HaHaHa(); 
} 

// .cpp 

#include "MyClass.h" 

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

algunas google no se presentó a la lista para usar herramientas . Pero estoy bastante seguro de que no es una idea nueva y esas herramientas deberían existir.

P.S. Se sabe que, por ejemplo, Visual Assist X y VIM tienen herramientas para manejar la separación .h y .cpp con menos dolor. Pero estoy preguntando sobre la posibilidad de tener un código en un archivo y separarlos automáticamente como parte del proceso de compilación.

+2

¿Y por qué no poner todo el código en los archivos h? Compilaciones lentas –

+0

Los módulos llegarán antes (o más tarde) a C++, consulte: http://stackoverflow.com/questions/3596147/modules-in-c0x Esto lo resolverá con suerte. – tauran

+2

"compilaciones lentas" - como ejemplo. Los analizadores lentos de la autocompilación son incluso peores. O a veces uno escribe una biblioteca y no quiere que sea "de código abierto". En general, C++ está diseñado para tener esta separación. Desde este punto de vista, tener dicha herramienta es una solución muy clara. – MajesticRa

Respuesta

4

Esta herramienta puede ayudarle a: http://www.lazycplusplus.com/

+0

¡Gracias! ¡Eso se ve realmente lo que estaba preguntando! Ahora es el momento de comprobarlo en acción ... – MajesticRa

+0

Dado que el analizador ha sido hecho a mano, soy escéptico sobre su capacidad para analizar sentencias C++ reales: plantillas, tipos de funciones, ... –

+0

¿lo has intentado? – vulkanino

2

Creo que lo estás haciendo al revés: ¿Quieres escribir el archivo de cabecera , sin las implementaciones, antes de escribir el código. Lo que sería bueno es una herramienta que leería el archivo de encabezado y generaría el código de esquema para la implementación: con espacios de nombres, clases anidadas y tales, solo los contenedores pueden ser bastante detallados. Pero lo más cerca que he visto es Rational Rose, que comienza con un diagrama de ULM (altamente) anotado, y genera tanto el encabezado como la repetición de la implementación. Es una herramienta muy buena — Lo uso cuando está disponible — pero es un poco caro para el usuario doméstico, y probablemente incluso para pequeñas empresas .

Cuestiones relacionadas