¿Funcionará este truco en C?

Quiero agregar un campo a una estructura en C. Entonces, por ejemplo, tengo la siguiente estructura.

struct A
{
 some_type x;
 some_type y;
}

Declaro una nueva estructura, como esta.

struct B
{
 A a;
 some_type z;
}

Ahora di que tengo una función como esta.

int some_function( A * a )

¿Es posible pasarle una variable de tipo B como esta en el programa?

B * b;
......
A * a = (A*)b;
some_function( a );

Y también poder usar los campos dentro.some_function mediante el usoa->x ¿por ejemplo?

Respuestas a la pregunta(5)

Su respuesta a la pregunta