У меня есть большое количество отдельных типов данных (то есть: процессы, файлы, потоки, функции и т. Д.), Которые определены короткими, простыми .c
/.h
файлами. Как только я закончил выполнение отдельных частей и завершил тестирование единицы/кода, я перешел к соединению частей вместе.struct with pointer-to-parent-struct: лучший подход
Текущая реализация использует указатель на struct
через родителями и (void *)
указатели в коде, то есть:
struct typeB {
int B;
void *parent;
};
struct typeC {
int C;
void *parent;
};
struct typeA {
int a;
struct typeB *pB;
struct typeC *pC;
};
Я использовал void *
указатели из-за того, как сложны некоторые struct
s являются, и они не будут компиляция, если я использую фактические pointer-to-struct-type
вместо void *
.
Есть несколько функций, где typeB
и typeC
необходимо говорить друг другу, но они редки. Кроме того, обе эти struct
s никогда не должны знать о int a
в parent
.
я мог удалить parent struct
указатели и реорганизовать свои прототипы функций/определения для простой все принимают (struct typeA *)
в качестве аргумента, получить доступ к суб-структуры, и т.д., но это кажется излишним, поскольку некоторые функции просто необходимо иметь доступ к typeB
/typeC
структуры и их элементы.
Существует ли де-факто (негрузово-культовое программирование) для обработки такой организации структур (аналогично правилу «не накладывать malloc()
», которое я часто повторяю на этом сайте)?
спасибо.
Передовые декларации. Используй их. –
@ н.м. Справедливо. Кроме того, существуют ли какие-либо существенные проблемы с использованием логики-указателя-родителя-структуры? Спасибо. – DevNull
, если вы пытаетесь реализовать наследование, убедитесь, что выровняете родительский указатель в 0-й части структуры, поэтому смещение будет 0 –