their includes headers guards functions files cpp and c++ build header-files

includes - headers c++>



Incluir.cpp en lugar de encabezado(.h) (4)

Hay algunos casos cuando incluimos el archivo .cpp en lugar del archivo de encabezado estándar (.h), por ejemplo:

#include "example.cpp"

en lugar de

#include "example.h"

Parece funcionar, pero ¿es seguro o debería evitarlo?

¿Qué pasa con el tiempo de compilación?


Es la codificación perezosa. Usar archivos de cabecera. Sí, pueden aumentar el tiempo de compilación, pero significan que puedes reimplementar fácilmente fragmentos de tu código, o mejor aún, otro desarrollador podría en cualquier momento. El archivo de encabezado sirve como plantilla para lo que va a hacer su código C/C++ . Es una mala idea descartarlo o ignorarlo.


Estoy de acuerdo con Kerrek SB.

Hice esto una vez. Estaba construyendo una excelente biblioteca de compresión ampliamente utilizada que debía compilarse por separado para imágenes de 8 bits y para imágenes de 12 bits. La forma más limpia que se me ocurrió para encajar esto en el sistema de compilación fue (simplificando un poco más) tener dos archivos maestros .cpp, uno que establece #defines para una compilación de 8 bits y el otro para una compilación de 12 bits. Los archivos maestros .cpp luego incluyen los archivos de origen de la biblioteca de compresión.

Está bien no seguir una regla general si entiende la regla lo suficientemente bien como para conocer los motivos y por qué es posible que no se aplique en su caso. (Pero esos casos deberían ser raros.)


Hay usos legítimos para #include "impl.cpp" :

  1. pruebas de acceso a variables estáticas / etc

  2. Plantillas ad hoc como estas si el mecanismo de la plantilla c ++ resulta inadecuado (raro)

    #define MACRO (...)

    #include "impl.cpp" // uses MACRO

Tenga en cuenta que #include "impl.cpp" puede ser inseguro si el mismo archivo se incluye en unidades de compilación separadas que luego se vinculan.


Lo he usado antes y no tuve ningún problema, pero no puedo garantizar que esto sea seguro. A veces, esta era la única opción para mí, así que la usé, de lo contrario usaré el archivo .h.