Если вы знаете типы, с которыми вы будете работать до этого, вы можете определить функцию grep для каждого типа, например:
grep_int(int* pi);
grep_char(char* pc);
grep_float(float* pf);
Также определите макрос как
#define GREP(T, TPTR_VAR) grep_##(TPTR_VAR)
Таким образом, звонок типа GREP(int, pi)
будет переведен на grep_int(pi)