C - ошибка: размер хранилища 'a не известен
Это моя программа на C...
#include <stdio.h>
struct xyx {
int x;
int y;
char c;
char str[20];
int arr[2];
};
int main(void)
{
struct xyz a;
a.x = 100;
printf("%d\n", a.x);
return 0;
}
Это ошибка, которую я получаю....
Нажмите ENTER или введите команду для продолжения
13structtest.c: In function ‘main’:
13structtest.c:13:13: error: storage size of ‘a’ isn’t known
13structtest.c:13:13: warning: unused variable ‘a’ [-Wunused-variable]
Ответы
Ответ 1
Ваша структура называется struct xyx
, но a
имеет тип struct xyz
. После того, как вы исправите это, на выходе будет 100
.
#include <stdio.h>
struct xyx {
int x;
int y;
char c;
char str[20];
int arr[2];
};
int main(void)
{
struct xyx a;
a.x = 100;
printf("%d\n", a.x);
return 0;
}
Ответ 2
Скажите так: struct xyx a;
Ответ 3
вы определяете структуру как xyx, но вы пытаетесь создать структуру, называемую xyz.
Ответ 4
Вы определяете свою структуру как xyx
, однако в основном вы используете struct xyz a;
, который создает только декларацию forward с именованной структурой.
Попробуйте использовать xyx a;
вместо этой строки.
Ответ 5
правильная опечатка
struct xyz a;
to
struct xyx a;
Лучше вы можете попробовать typedef, легко b
Ответ 6
Кому-то, у кого есть эта проблема, есть опечатка. Проверьте правильность написания ваших структурных издевательств и структуры
Ответ 7
В этом случае пользователь ошибся в определении и его использовании.
Если кто-то сделал typedef
для структуры, то то же самое следует использовать без использования struct
, приведенного ниже.
typedef struct
{
int a;
}studyT;
При использовании в функции
int main()
{
struct studyT study; // This will give above error.
studyT stud; // This will eliminate the above error.
return 0;
}