Non. C'est le compilateur C++ qui redirige, à partir de la signature de la fonction appelée, vers la bonne fonction. Comme un compilateur C ne connaît pas ce qu'est la surcharge, il est donc impossible d'appliquer ce principe.
Un moyen serait de passer un flag à une fonction prenant un nombre indéfini d'argument, mais ce n'est pas du tout le même principe.
Exemple:
void __cdecl toto (int flag, ...)
{
va_list l;
va_start(l, flag);
switch(flag) {
case 1: {
int i = va_arg(l, int);
printf("%d\n", i);
} break;
case 2: {
char *c = va_arg(l, char*);
int i = va_arg(l, int);
printf("%s -> %d\n", c, i);
} break;
}
}
C++ (@++)