У меня есть заголовок, и он включает в себя прототип структуры:
struct UserDataStruct;
Исходный файл для заголовка содержит и включает для заголовка и:
struct UserDataStruct
{
int instance;
};
В моем основном исходном файле у меня есть:
int main ()
{
UserDataStruct lol;
return 0;
}
Я не могу скомпилировать мою программу, потому что Visual Studio 2010 выдает мне ошибку:
error C2079: 'lol' uses undefined struct 'UserDataStruct'
Как я могу сделать эту работу?
Полное определение UserDataStruct
должен прийти, прежде чем создать экземпляр этого. Форвард объявляет недостаточно в этом случае.
Просто переместите определение структуры из файла .cpp в заголовок.
Это не сработает; структура должна быть полностью известна в main (); Вы должны поместить полное объявление своей структуры в заголовочный файл, а затем включить его в основной файл .c.
Вы можете пересылать объявления структур / союзов / классов (потому что это то, что вы делаете), только если вы используете указатели в других заголовочных файлах. Но в конце концов вам придется предоставить полную декларацию в ваших .c файлах. Вы не можете «спрятать» внутренности своей структуры.