Re: doplnění prvků do struktury

Miroslav Šinko sinkomiro na gmail.com
Středa Květen 8 11:29:06 CEST 2024


Moj priklad nebol komletny, pisal som to vecer bez vyskusania.
Takto, hoci lepsie by bolo strukrury definovat typedef-om:

struct x{
  size_t size;
  int a;
  int b;
}x;

struct x_ext{
  struct x y;
  int c;
  int d;
}x_ext;

void test_output(struct x_ext *px_ext)
{
	switch(px_ext->y.size)
	{
	case sizeof(struct x):
		printf("access allowed only to a, b\n");
		printf("a = %d\n", px_ext->y.a);
		printf("b = %d\n", px_ext->y.b);
		break;

	case sizeof(struct x_ext):
		printf("access allowed also to c, d\n");
		printf("a = %d\n", px_ext->y.a);
		printf("b = %d\n", px_ext->y.b);
		printf("c = %d\n", px_ext->c);
		printf("d = %d\n", px_ext->d);
		break;

	default:
		printf("unknown struct\n");
	}
}

void teststruct()
{
	x.size = sizeof(x);
	x.a = 1;
	x.b = 2;
	test_output((struct x_ext *)&x);

	x_ext.y.size = sizeof(x_ext);
	x_ext.y.a = 10;
	x_ext.y.b = 20;
	x_ext.c = 30;
	x_ext.d = 40;
	test_output(&x_ext);
}

Vysledok:
access allowed only to a, b
a = 1
b = 2
access allowed also to c, d
a = 10
b = 20
c = 30
d = 40

miro


Další informace o konferenci Hw-list