История изменений
Исправление SkyMaverick, (текущая версия) :
Если там что-то из серии
/* API либы, через который вся работа */
struct {
uintptr_t (*func)(<чётатам + va_list какой-нибудь>);
...
} my_functions_t;
/* собственно внешний интерфейс */
my_functions_t* start_core(<чётатам>);
void stop_core(void);
В случае, если либа из серии «кишки наружу», тогда да, можно и просто параметры вызова согласовать. upd. И то с теми же va_list-ами или константными указателями (const <чёта-там>*) потенциально можно сильно накривить.
Исправление SkyMaverick, :
Если там что-то из серии
/* API либы, через который вся работа */
struct {
uintptr_t (*func)(<чётатам + va_list какой-нибудь>);
...
} my_functions_t;
/* собственно внешний интерфейс */
my_functions_t* start_core(<чётатам>);
void stop_core(void);
В случае, если либа из серии «кишки наружу», тогда да, можно и просто параметры вызова согласовать. upd. И то с теми же va_list-ами или указателями на константы (const <чёта-там>*) потенциально можно сильно накривить.
Исходная версия SkyMaverick, :
Если там что-то из серии
/* API либы, через который вся работа */
struct {
uintptr_t (*func)(<чётатам + va_list какой-нибудь>);
...
} my_functions_t;
/* собственно внешний интерфейс */
my_functions_t* start_core(<чётатам>);
void stop_core(void);
плюс заказчику нужен *.pas файл чтобы он мог включить его в проект и собирать отдельно от core-либы.
В случае, если либа из серии «кишки наружу», тогда да, можно и просто параметры вызова согласовать.