// Mock the common wrapper functionality. For the purpose of this discussion, // this is just a sink accepting any function argument. #define MOCK_WRAPPER_IMPL(ret, fn) \ /* do common work */ \ static ret wrap_##fn(...); // Utility to generate wrapper boilerplate. #define WRAP(ret, fn, ...) \ MOCK_WRAPPER_IMPL(ret, fn) \ \ extern "C" ret fn(__VA_ARGS__) WRAP(int, foo, const char* name) { return wrap_foo(name); } WRAP(int, bar, const char* name, const char* value) { return wrap_bar(name, value); }