Цитата(Непомнящий Евгений @ Nov 9 2007, 09:21)

Когда вы вызываете функцию, компилятору надо знать типы передаваемых параметров и тип возвращаемого значения, чтобы расположить все это на стеке и в регистрах нужным образом.
Если вызвать функцию void func(char t), используя указатель void (*P)(void*), то что из этого получится будет целиком зависеть от реализации компилятора. Например, если аргументы передаются в стеке и функция должна их выбрать сама, то будет плохо.
Тут второй вопрос - а зачем вам это надо? Что значит - передать аргумент неизвестного типа? Максимум - это указатель void*... Но смешивать указатель и char, как в вашем примере - ИМХО, прямой путь поиметь кучу траблов.
Поддерживаю. Можно, конечно, извратиться, но это будет коряво и непереносимо. Вы лучше изложите задачу, и я уверен, что кто-нибудь предложит более элегантное решение.