Это сработало бы, если бы вы просто использовали базовые типы (поскольку они просто строки - см. Ответ Митча).Но как только вы попытаетесь использовать указатели, это больше не будет работать - звездочка бросает препроцессор в цикл:
[holt@Michaela ~]$ gcc test.c
test.c:3:10: error: operator '*' has no right operand
Но если вы хотите делать разные вещи, основанные на разных типах, яЯ собираюсь рекомендовать перейти на C ++ и использовать шаблоны и шаблон специализации .Неохотно, поскольку синтаксис шаблона невероятно уродлив, но вы должны иметь возможность делать все, что захотите.
Надеюсь, это поможет!