Я работаю над проектом, в котором я вынужден использовать ранее написанный код, который использует много файлов заголовков, вызывающих другие файлы заголовков. Я пытаюсь разделить мое приложение, но мне все еще нужно использовать многие типы и функции, определенные в предыдущем коде.C, используя декларацию о переходе в определении функции
Я добавил декларации в своих заголовочных файлах, ссылаясь на типы данных, объявленные в других файлах заголовков. Моя проблема сейчас, я пытаюсь ссылаться на тип объединения из определения функции в исходном файле, и я не совсем уверен, как это сделать.
Старый заголовочный файл:
/* filename: include.h */
typedef union SOME_UNION_TYPE
{
int a;
.
.
}SOME_UNION_TYPE;
Мой исходный файл:
/* filename: file.c */
void func()
{
SOME_UNION_TYPE A;
.
.
return;
}
Я знаю, что было бы проще просто включить "include.h" в моем исходном коде, но я Я стараюсь избегать его как можно больше. Моя попытка до сих пор заключалась в том, чтобы отправить объявление в мой заголовочный файл, в надежде разоблачить имя typedef компилятору.
Мой заголовочный файл:
/* filename: file.h */
union SOME_UNION_TYPE;
Однако, когда я компилирую, я получаю сообщение об ошибке жалуется неизвестного размером для А в FUNC().
Заранее благодарим за любую помощь.
Вы не можете выделить то, что было объявлено вперед. Однако вы можете создать указатель на все, что объявляется вперед. –
@NoahWatkins спасибо! Я предположил, что в объявлении в заголовке указывается информация о размере во время компиляции. Мне нужно потратить некоторое время на лучшее понимание процесса компиляции и компоновки. – dsell002