Непрозрачная структура с объявлением функции - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть следующие структуры:

service.h * * 1004

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 не является непрозрачным. Это меня запутало. Это плохой выбор дизайна? На самом деле, мой вопрос:

Следует ли нам избегать предоставления определения структуры в случае, подобном описанному выше, чтобы вызывающая сторона не знала о ее членах?

...