【发布时间】:2014-05-12 00:01:50
【问题描述】:
也许我问错了问题,但我正在尝试使用以下设计(包括为简洁而移除的防护装置)。
/* 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,我的目标平台是微控制器,所以我试图避免动态分配和全局变量。
【问题讨论】:
标签: c struct include global circular-dependency