Это зависит от того, как вы собираетесь использовать структуру для своих пользователей. Если им разрешено создавать экземпляры и изменять элементы, то вам нужно поместить определение в заголовочный файл. С другой стороны, если пользователям не требуется доступ к элементам структуры, вы должны поместить его в файл .c.
Давайте предположим, что это последний случай. Если это так, cow_t
непрозрачен для пользователей, и вам нужно будет создать для него функции доступа. Например:
cow_t *CreateCow( void )
{
return malloc( cow_t );
}
void SacrificeCow( cow_t *cow )
{
free( cow );
}
int GetNumberOfCowLegs( cow_t *cow )
{
return cow->legs;
}
void SetNumberOfCowLegs( cow_t *cow, int numLegs )
{
cow->legs = numLegs;
}