Я пишу библиотеку C, и у меня есть структура, которая выглядит (примерно) как:
struct Obj {
char tag,
union {
int i,
void *v
} val
};
Я не хочу раскрывать внутренности этой структуры через API, потому что пользователи ненужно знать реализацию и они могут измениться в будущих версиях.Пользователи могут взаимодействовать со структурой через функции в API.
Я использовал неполные типы в заголовке для других, более крупных типов в моем API, к которым пользователь может обращаться только через указатель.Я не хочу ограничивать доступ пользователей к Obj
через указатель, так как Obj
, скорее всего, будет максимум 16 байт.
Я не смог использовать здесь неполный тип, потому что я не знаюспособа предоставить пользователям только размер структуры без полей.
Мой вопрос таков: есть ли способ предоставить тип с размером только в C (нет сведений о полях в данной структурепользователю), какой-нибудь другой взлом, чтобы выполнить то, что я хочу, или я должен реализовать это каким-то совершенно другим способом?
Пожалуйста, прокомментируйте, если я не предоставил достаточно деталей, или что-то неясно.