He visto consejos consistentes de que un archivo de implementación (.cc/.cpp) debe incluir su clase correspondiente definition file first, antes de incluir otros archivos de encabezado. Pero cuando el tema cambia a los archivos de encabezado, y el orden de incluye que contienen, el consejo parece variar.Incluir estrategia de pedido de archivos
sugieren:
- dir2/foo2.h (ubicación preferida - ver detalles a continuación).
- C archivos de sistema.
- Archivos de sistema C++.
- Archivos de otras bibliotecas .h.
- Los archivos .h de su proyecto.
No está claro cuál es la diferencia entre las entradas 1 y 5 anteriores, y por qué se elegiría una u otra ubicación. Dicho esto, another online guide sugiere este orden (que se encuentra en la sección "Disposición" de ese documento):
- sistema incluye
- proyecto incluye
- local incluye
Una vez más, hay una ambigüedad, esta vez entre los ítems 2 y 3. ¿Cuál es la distinción? ¿Los que representan incluyen entre proyectos e intra-proyectos?
Pero más al punto, parece que los dos estándares de codificación propuestos sugieren que "sus" archivos de encabezado están incluidos al final. Tal consejo, estar al revés de lo que se recomienda para ordenar por inclusión en los archivos de implementación, no es intuitivo. ¿No sería lógico que los archivos de encabezado "tu" aparezcan en primer lugar, antes que los encabezados del sistema y de terceros?
La diferencia entre 1 y 5 se aclara con "In dir/foo.cc", cuyo objetivo principal es implementar o probar las cosas en dir2/foo2.h, ordena tus includes de la siguiente manera: "comentario encontrado justo encima del 1-5 lista. –
posible duplicado de [Orden de archivo de encabezado] (http://stackoverflow.com/questions/4800991/header-file-order) –