Error unknown type name для объединия - C (СИ)
Формулировка задачи:
Здравствуйте! Подскажите, пожалуйста, как исправить код. Компилятор выдает ошибку: error: unknown type name 'u', в строке "u ldc";
#include <stdio.h>
union u
{
long double ldb;
double db;
float fl;
char data_f[sizeof(float)];
char data_d[sizeof(double)];
char data_l[sizeof(long double)];
};
int main()
{
u ldc;
unsigned char c;
int i, j;
char type = ' ';
while(type != 'f' && type != 'd' && type != 'l')
type = getc(stdin);
char key = type;
while(type != ' ')
type = getc(stdin);
if(key == 'l')
{
type = getc(stdin);
while(type != ' ')
type = getc(stdin);
}
float f = 0;
double d = 0;
long double ld = 0;
switch (key)
{
case 'f':
scanf("%f", &f);
ldc.fl = f;
for (i = sizeof(ldc) - 5; i >= 0; --i)
{
c = ldc.data_f[i];
for (j = 0; j < 8; ++j)
{
if (c & (128 >> j))
printf("1");
else
printf("0");
if (j == 3)
printf(" ");
}
printf(" ");
}
break;
case 'd':
scanf("%lf", &d);
ldc.db = d;
for (i = sizeof(ldc) - 1; i >= 0; --i)
{
c = ldc.data_d[i];
for (j = 0; j < 8; ++j)
{
if (c & (128 >> j))
printf("1");
else
printf("0");
if (j == 3)
printf(" ");
}
printf(" ");
}
break;
case 'l':
scanf("%Lf", &ld);
ldc.ldb = ld;
for (i = sizeof(ldc) - 1; i >= 0; --i)
{
c = ldc.data_l[i];
for (j = 0; j < 8; ++j)
{
if (c & (128 >> j))
printf("1");
else
printf("0");
if (j == 3)
printf(" ");
}
printf(" ");
}
break;
}
return 0;
}Решение задачи: «Error unknown type name для объединия»
textual
Листинг программы
struct some
{
int one;
};
...
struct some yes;
Объяснение кода листинга программы
- Структура данных
someобъявлена с полем типа int под именемone. - Переменная
yesтипа struct some объявлена.