preguntas que he revisado y How to use include directive correctlyC++ #include semantics y tampoco aborda este - ni los otros sugeridos por eso, cuando he escrito el título ...¿Cuáles son los beneficios de una ruta relativa como "../include/header.h" para un encabezado?
Lo que, en su caso, son las ventajas de la escritura:
#include "../include/someheader.h"
#include "../otherdir/another.h"
en comparación con el uso de sólo un nombre de archivo sin formato:
#include "someheader.h"
#include "another.h"
o tal vez un nombre relativo sin el '..
':
#include "include/someheader.h"
#include "otherdir/another.h"
Los problemas que veo son:
- no se puede mover una cabecera sin tener que preocuparse acerca de qué archivos de origen que incluyen.
- Puede terminar con rutas muy largas para encabezados en dependencias e informes de errores. Hoy tuve uno con "
../dir1/include/../../include/../dir2/../include/header.h
".
El único mérito que puedo ver es que, si bien no es necesario mover ficheros, usted podría ser capaz de salirse sin necesidad de utilizar siempre '-I
' directivas encontrar las cabeceras, pero la pérdida de la flexibilidad y la la complejidad de compilar en subdirectorios, etc. parece superar el beneficio.
Entonces, ¿estoy pasando por alto un beneficio?
Gracias por las entradas. Creo que el consenso es que no hay ningún beneficio importante para la notación usando "..." que estoy pasando por alto. En términos generales, me gusta la notación "somewhere/header.h"; Lo uso en nuevos proyectos. En el que estoy trabajando no es nuevo.
Uno de los problemas es que hay diversos conjuntos de cabeceras, a menudo con un prefijo tal como rspqr.h
, rsabc.h
, rsdef.h
, rsxyz.h
. Todos estos están relacionados con el código en el directorio rsmp
, pero algunos de los encabezados están en rsmp
y otros están en el directorio de inclusión central, que no tiene subdirectorios como rsmp
en él. (Y repita para las otras áreas del código, hay encabezados en múltiples ubicaciones, necesarios al azar por otros bits de código.) Mover cosas es un problema importante porque el código se ha vuelto tan intrincado en los últimos años. Y los archivos MAKE no son consistentes en el que se proporcionan las opciones -I
. En general, es una triste historia de negligencia no tan benigna durante un período de décadas. Arreglarlo todo sin romper nada va a ser un trabajo largo y tedioso.
Parece ser consciente de todos los factores involucrados, por lo que esta no es realmente una pregunta. – shoosh
Estoy comprobando si hay beneficios que he pasado por alto (porque odio la notación pero la sufro en el trabajo). Tengo menos problemas con la notación sin el "..." en ella. –
Esto (usando rutas relativas) tiende a generar enormes dolores de cabeza cuando se usa un directorio de compilación separado. Es decir, cd tu proyecto; mkdir build; cd build; ../configure && make - Si va a seguir manteniendo el código, puede valer la pena el tiempo para solucionarlo. –