Вы можете использовать макрос, чтобы передать как указатель на вашу структуру, так и ее имя действительной функции.
struct bar {
// blah
};
void actual_foo(struct bar *b, char *bname) {
// whatever
}
#define foo(bar) actual_foo(&(bar), #bar)
int main() {
struct bar b;
foo(b);
}