Примечание: это работает только для указателей (и в c ++, ссылки). Если у вас есть ссылка на законченный объект, компилятор должен будет знать об этом.
я есть простой код C с файлами * .c и * .h в рабочей области.
У меня есть файл заголовка 1.h, объявляя некоторую структуру как
struct my1
{
int a;
..
..
}my_t;
Но когда я пытаюсь объявить переменную типа struct my1 в другом заголовочном файле 2.h следующим образом:
struct my1 variable1;
Это дает ошибку в этой точке декларации.
Похоже, что my1 здесь не определено в файле 2.h.
В файле 1.h мне нужно включить 2.h, поэтому в файле 2.h я не могу включить 1.h из-за боязни рекурсивного включения.
Мой вопрос:
Что мне нужно объявить, чтобы устранить ошибку компиляции в этом случае?
Все это заставило меня задуматься над дальнейшими вопросами о включениях заголовочных файлов.
Как включены заголовочные файлы, в каком порядке, какой заголовочный файл первым, а какой?
Вызывает ли рекурсивное включение заголовочных файлов ошибки одного файла, в том числе другого, и других, в том числе первого?
Не удалось опубликовать фактические фрагменты кода по какой-либо причине безопасности, поэтому извините, если вопрос вызывает проблемы с читабельностью.