Zakładając, że wszystkie funkcje współdzielą ten sam typ zwracania, czy można wywoływać każdą z nich za pomocą "ogólnego" wskaźnika funkcji, który jest zadeklarowany za pomocą pustych nawiasów (a więc nie określa jego argumentów)?Czy dozwolone jest wywoływanie funkcji z różnymi prototypami za pomocą pseudogenericowego wskaźnika funkcji?
Oto przykładowy kod, który ilustruje go:
#include <stdio.h>
void fun1(void)
{
printf("fun1\n");
}
void fun2(int a)
{
printf("fun2: %d\n", a);
}
void fun3(int a, int b)
{
printf("fun3: %d %d\n", a, b);
}
int main(void)
{
void (*pf)(); // pseudo-generic function pointer
pf = fun1;
pf();
pf = fun2;
pf(0);
pf = fun3;
pf(1, 2);
return 0;
}
Możliwy duplikat [wskaźnika funkcji bez typów argumentów?] (Http://stackoverflow.com/questions/20835534/function-pointer- bezargumentowych-typów) –
Interesujące pytanie. Prawidłowe jak w "czy kompiluje się i działa zgodnie z oczekiwaniami?" tak, czy mówi "kompilacja z' -Wall' działa bez ostrzeżeń? " na moich kompilatorach tak :-) – Dilettant
Tak, bez ostrzeżenia nawet w trybie paranoicznym '-Wall-Wextra -pedantic -Wconversion' przez GCC 4.9 ... @Dilettant – alk