Включить заголовок в другой заголовочный файл - PullRequest
10 голосов
/ 17 марта 2011

Я определил struct item в файле .h.Теперь я определяю другой struct tPCB в другом .h, который является частью того же проекта, и мне нужно, чтобы tPCB имел item.Я думал, что простое участие в одном и том же проекте TurboC позволит мне использовать элемент в другом заголовочном файле, но компилятор выдает мне «undefined type: ite».

Полагаю, мне нужно как-то включить первый заголовок во второй, однако я видел такой же код, который работает без этого.

Есть ли другой способ, кроме простого добавления#include строка, чтобы она работала?

Ответы [ 5 ]

9 голосов
/ 17 марта 2011

Если ваши .c #include s два файла .h в правильном порядке, он будет работать. Это, вероятно, то, что произошло в случае, если вы помните. Самый безопасный способ - #include каждый файл, который определяет ваши зависимости, и полагаться на включающие ограждения в каждом .h для предотвращения множественного определения.

1 голос
/ 18 марта 2011

Никогда не помещайте определения переменных (то есть выделяя их) в заголовочный файл. Это плохо по многим различным причинам, две из которых - плохой дизайн программы и поток ошибок компоновщика.

Если вам нужно предоставить переменную глобально (не так много случаев, когда вам действительно нужно это сделать), объявите ее как extern в h-файле и выделите ее в соответствующем файле C.

1 голос
/ 17 марта 2011

Извините, в C нет способа получить доступ к определению структуры в другом заголовочном файле без включения этого файла (через #include). Инструкции для #include следуют.

Итак, допустим, что файл заголовка, который содержит определение структуры элемента, называется "item.h", а файл заголовка, который содержит определение структуры tPCB в "tPCB.h". В верхней части tPCB.h вы должны поместить следующий оператор:

#include "item.h"

Это должно дать файлу tPCB.h доступ ко всем определениям в item.h.

0 голосов
/ 17 марта 2011

В вашем "другом .h", #include <a .h file>.

Разработка:

В файле, который определяет struct tPCB, вам нужно #include файл, который определяет struct item.

0 голосов
/ 17 марта 2011

Вам нужно использовать #include. В Си все явно; не ожидайте, что это сработает по волшебству.

...