具有函数声明的非透明结构

时间:2019-04-13 10:16:44

标签: c software-design opaque-pointers

我具有以下结构:

service.h

typedef struct source source;

enum status{
    running = 1,
    stopping = 2,
    stopped = 3
};

struct service{
    source *source_ptr;
    enum status svc_status;   
};

void request_shutdown(struct service);

在头文件中,void request_shutdown(struct service);的定义将在相应的c文件中提供。它取决于平台,因为它取决于struct source定义,而该定义本身又取决于平台。但是struct service不是不透明的。这让我感到困惑。这是一个糟糕的设计选择吗?实际上,我的问题是:

我们应该避免在上述情况下提供结构的定义,以使调用者不了解其成员吗?

0 个答案:

没有答案