2016-08-31 3 views
1

Я пытаюсь изменить Android, в котором я меняю часть своего кода на C++ и сталкиваюсь с проблемой, связанной с заголовком.Зависимости заголовков C++

Say в файле foo.c, мне нужно включить bar.h, но он сидит в другой папке:

../../dir1/dir2/bar.h

bar.h в свою очередь, включает в себя файл baz.h из той же папке (dir2):

#include <dir2/baz.h>

Сначала я попытался включить bar.h в foo.c:

#include "../../dir1/dir2/bar.h"

Но их bar.h не может найти baz.h.

Я попытался изменить Makefile, чтобы добавить INC=-I../../dir1, но он не работает. Любые предложения помогут.

+0

Вы пытались сбросить все компилируемые флаги, используемые gcc? Я думаю, что должно быть что-то вроде подробного режима в make – szx

ответ

3

С bar.h и baz.h находятся в том же каталоге, используйте следующее bar.h:

#include "baz.h" 

Чтобы #include bar.h в foo.c, у вас есть много вариантов. Например.

Выбор 1:

#include "../../dir1/dir2/bar.h" 

и компилировать с -I.. Вы также можете опустить -I..

Выбор 2:

#include <bar.h> 

и компилировать с -I../../dir1/dir2.

Выбор 3:

#include <dir1/dir2/bar.h> 

и компилировать с -I../...

Какой метод вы выберете для #include ing bar.h в foo.c, зависит от большего представления о том, как структурирована остальная часть вашего кода и определения модульности в проекте.

+1

Для ** Choice 1 ** вам действительно не нужен флаг '-I' – Zereges

+0

@ Zereges. –