Я читал о ООП в C, но мне никогда не нравилось, как у вас не могут быть частные члены данных, как вы можете на С++. Но потом мне пришло в голову, что вы можете создать 2 структуры. Один из них задан в файле заголовка, а другой - в исходном файле.
// =========================================
// in somestruct.h
typedef struct {
int _public_member;
} SomeStruct;
// =========================================
// in somestruct.c
#include "somestruct.h"
typedef struct {
int _public_member;
int _private_member;
} SomeStructSource;
SomeStruct *SomeStruct_Create()
{
SomeStructSource *p = (SomeStructSource *)malloc(sizeof(SomeStructSource));
p->_private_member = 42;
return (SomeStruct *)p;
}
Отсюда вы можете просто сместить одну структуру в другую. Это считается плохой практикой? Или это часто делается?