아마도 잘못된 질문을하고 있지만 다음 디자인 (간결성을 위해 제거 된 가드 포함)을 사용하려고합니다.마스터 구조체 및 종속성
/* config.h */
#include "foo.h"
#include "bar.h"
struct config {
struct foo foo;
struct bar bar;
...
};
/* foo.h */
#include "config.h"
struct foo {
...
};
void foo_something(struct config *, ...);
/* bar.h */
#include "config.h"
struct bar {
...
};
void bar_something(struct config *, ...);
/* main.c */
int main(void)
{
struct config config;
/* initialize struct */
foo_something(&config);
bar_something(&config);
print_config(&config);
}
이것은 순환 의존성 문제입니다. 앞으로 선언문을 추가하고 #include "config.h"
을 파일의 맨 아래로 옮겨서 제대로 작동하도록 만들 수 있지만, 제대로 된 것은 아닙니다. 이 모든 구조체는 이전에는 같은 파일에 있었지만 모듈화를 향상시키기 위해 해체하고 싶었습니다.
이 문제를 방지하려면 더 나은 설계 방법이나 더 좋은 디자인 패턴이 있습니까?
FWIW, 내 대상 플랫폼은 마이크로 컨트롤러이므로 동적 할당과 전역을 피하려고합니다.
대부분의 경우 각 파일은 해당 구조체 만 사용하는 경향이 있습니다. 그러나 모든 구조체가 필요한 함수를 호출하는 위치는 1 ~ 2 개입니다. – Balthamos
나는 그 1 또는 2 개의 장소를 재 설계하는 방법에 집중할 것입니다. 기능상의 명확한 구분이 없다면 별도의 데이터가 없습니다. 애매한 것에 대해 유감스럽게 생각합니다. 더 자세한 내용을 말하면 아마도 더 잘 조언 할 것입니다. – user58697