#ifndef PLUG_H_ #define _QUOTE(name) #name #define QUOTE(name) _QUOTE(name) #define BIND(lib, func, func_name) *(void **) (&func) = dlsym(lib, func_name) #define PLUGIN(lib, x) BIND(lib, x, QUOTE(x)) typedef void (*plug_t)(void); plug_t plug; #define PLUG_H_ #endif