Esse truque funcionará em C?

Eu quero adicionar um campo a uma estrutura em C. Assim, por exemplo, eu tenho a seguinte estrutura.

struct A
{
 some_type x;
 some_type y;
}

Eu declaro uma nova estrutura, assim.

struct B
{
 A a;
 some_type z;
}

Agora digamos que tenho uma função assim.

int some_function( A * a )

É possível passar uma variável do tipo B para isso assim no programa.

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

E também ser capaz de usar os campos dentrosome_function usandoa->x por exemplo?

questionAnswers(5)

yourAnswerToTheQuestion