Структура прототипов

У меня есть заголовок, и он включает в себя прототип структуры:

struct UserDataStruct;

Исходный файл для заголовка содержит и включает для заголовка и:

struct UserDataStruct
{
int instance;
};

В моем основном исходном файле у меня есть:

int main ()
{
UserDataStruct lol;

return 0;
}

Я не могу скомпилировать мою программу, потому что Visual Studio 2010 выдает мне ошибку:

error C2079: 'lol' uses undefined struct 'UserDataStruct'

Как я могу сделать эту работу?

1

Решение

Полное определение UserDataStruct должен прийти, прежде чем создать экземпляр этого. Форвард объявляет недостаточно в этом случае.

Просто переместите определение структуры из файла .cpp в заголовок.

2

Другие решения

Это не сработает; структура должна быть полностью известна в main (); Вы должны поместить полное объявление своей структуры в заголовочный файл, а затем включить его в основной файл .c.

Вы можете пересылать объявления структур / союзов / классов (потому что это то, что вы делаете), только если вы используете указатели в других заголовочных файлах. Но в конце концов вам придется предоставить полную декларацию в ваших .c файлах. Вы не можете «спрятать» внутренности своей структуры.

0

По вопросам рекламы [email protected]