ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
21 апреля
1512029 Топик полностью
=AlexD= (15.04.2025 09:46, просмотров: 79) ответил Nikolay_Po на Есть такой вариант. Да, хорошо делать так, чтобы для заявленного библиотекой функционала, достаточно было включить её заголовок, без ожиданий, что пользователь включит недостающее сам.
Если пользователь не обращается к элементам структуры напрямую, только через функции-методы, то предоставлять поля структуры в хедере не обязательно. Только имя для связывания. Это позволяет спрятать все артефакты внешней либы от пользователя и соответственно не инклудить её хедеры. Без всяких приведений типа. 

mylib.h


struct MyType;

int work (struct MyType * my_type);



mylib.c


#include "extlib.h"


struct MyType

{

struct ExtType ext_type;

};


int work (struct MyType * my_type)

{

ext_func(my_type->ext_type);

}


Нужно лишь создать все необходимые методы - фабрику типа, инициализацию и пр.

Это моё личное предвзятое мнение. Любое совпадение с реальностью является случайным и непреднамеренным.