sticky bit
19-05-2004, 20:04
Eigentlich mehr aus Spielerei bin ich heute drauf gekommen, dass ich ja mal das sonst eher von diversen OOP Sprachen bekannte Funktions Overloading in C abzubilden. Ich hab mir gedacht vielleicht funzt das, wenn ich nen gleichnamigen Pointer erzeuge und den einfach auf ne andere Funktion zeigen lasse. Also in etwa so:
#include <stdio.h>
#include <stdlib.h>
int overload (void)
{
printf("%s", "Die nicht ganz so zufaellige Zahl lautet: ");
return 0;
}
int main (int argc, char **argv)
{
int (*rand)(void);
rand = overload;
printf("%i\n", rand());
return(0);
}
Und cool, das haut sogar hin. Jetzt frag ich mich aber doch, ist dieses Verhalten irgendwie definiert, was der Compiler machen soll wenn er auf so eine Situation stösst oder ist das halt Zufall, dass das mit dem gcc klappt, andere Compiler hingegen würden aber die Funktion (die als solche als Prototyp vorhandene) vorziehen, oder wie sieht das aus?
#include <stdio.h>
#include <stdlib.h>
int overload (void)
{
printf("%s", "Die nicht ganz so zufaellige Zahl lautet: ");
return 0;
}
int main (int argc, char **argv)
{
int (*rand)(void);
rand = overload;
printf("%i\n", rand());
return(0);
}
Und cool, das haut sogar hin. Jetzt frag ich mich aber doch, ist dieses Verhalten irgendwie definiert, was der Compiler machen soll wenn er auf so eine Situation stösst oder ist das halt Zufall, dass das mit dem gcc klappt, andere Compiler hingegen würden aber die Funktion (die als solche als Prototyp vorhandene) vorziehen, oder wie sieht das aus?