Наверное с помощью макросов (подменяя имя функции) можно автоматический заполнить поле с именем переменной и уже это передать... ru.stackoverflow.com/questions/512136/Передать-имя-переменной-в-функцию
навскидку может так
void func(struct st_type *a);
#define _func(v) {v->name = _NAME_OF_ARG(v); func(*v)}