unter Windows heißen solche Bibliotheken beispielsweise DLL (Dynamic Link Library), und die wichtigsten Funktionen zum Umgang mit DLLs sind LoadLibrary() und GetProcAddress().
FreeLibrary() nicht zu vergessen. ;-)
Unter POSIX (Linux, *BSD, ...):
#include <dlfcn.h>
void *dlopen(const char *filename, int flag);
char *dlerror(void);
void *dlsym(void *handle, const char *symbol);
int dlclose(void *handle);
GNU Extensions:
int dladdr(void *addr, Dl_info *info);
void *dlvsym(void *handle, char *symbol, char *version);
Siehe http://www.die.net/doc/linux/man/man3/dlopen.3.html
Für jede Datei eine Funktion anlegen und die Funktion aufrufen anstatt die entsprechende Datei zu includieren?
Solange der Umfang überschaubar bleibt, wäre das auch eine Möglichkeit, und wahrscheinlich sogar effizienter.
Mit dem Preprozessor und einem gut ausgetüfteltem Makefile ist das kein großes Problem, ein Beispiel für diese Technik ist busybox.
Alexander