Tengo una pregunta sobre la directiva de preprocesador #include en C ++.

En mi programa me gustaría incluir un archivo de encabezado de otro directorio. Para esto he usado la ruta completa, ejemplo:

#include "full/path/to/my/header.hpp"

Ahora resulta que header.hpp tiene una inclusión (digamos #include "otherheader.hpp". Durante la compilación, el compilador se queja de que no puede encontrar este otro encabezado.

¿Cuál es la mejor manera de manejar este problema, considerando el hecho de que tampoco quiero escribir la ruta completa para cada archivo de encabezado, especialmente aquellos que solo se necesitan "más abajo en el árbol"?

0
Quasar 6 mar. 2018 a las 19:44

3 respuestas

La mejor respuesta

Debe usar la opción -I de su compilador.

Ejemplo con g++:

g++ -I full/path/to/my/

Luego, en su código, simplemente puede poner:

#include "header.hpp"

Más información sobre la ruta de búsqueda.

7
Ronan Boiteau 17 mar. 2018 a las 11:07

No especifique la ruta completa a las inclusiones. Especifique incluir directorios para el compilador en su lugar y luego simplemente #include <foo> sabiendo que foo se encontrará en /some/path/foo porque le dijo al compilador que busque /some/path/ para incluir. Para muchos compiladores esto se hace con la opción -I.

0
Jesper Juhl 6 mar. 2018 a las 17:02

La mayoría de los compiladores le permiten especificar la raíz para directorios de inclusión adicionales al compilar. Por ejemplo, en Visual C ++ usted especifica la bandera -I. También es lo mismo para gcc. Por ejemplo:

compiler -Ipath/to/headers myfile.c
3
Sean 6 mar. 2018 a las 16:46