Api Design For C -
: Keep internal implementation details hidden from the user by using opaque pointers (e.g., typedef struct my_object my_object_t; ). This allows you to change the struct's definition without breaking the binary compatibility of client code.
: Avoid global variables within your library. Instead, pass a "context" or "handle" pointer to every function that needs to maintain state, which also helps with thread safety. Recommended Resources for Deep Dives API Design for C
: Always provide paired functions for allocation and deallocation (e.g., _init() and _destroy() ). This ensures the user is responsible for the lifetime of objects they create. : Keep internal implementation details hidden from the

