Kun ihmettelin että tuossa glut:issa annetaan esim. tulostusfunktio kutsumalla glutDisplayfunc ja parametrina on sen funktion nimi joka sitten kutsutaan glutMainLoop:in aikana. Mites tälläinen toteutetaan?
Kyseessä on funktio-osoittimet.
#include <stdio.h>
typedef int funktiotyyppi(int x, int y);
int summa(int a, int b) { return a + b; }
int erotus(int a, int b) { return a - b; }
int laske(int a, int b, funktiotyyppi *funktio)
{
if (!funktio) {
printf("Funktio puuttuu!\n");
return -1;
}
return funktio(a, b);
}
int main(void)
{
const int a = 10, b = 7;
funktiotyyppi *funktio;
printf("summa == %p, erotus == %p\n", summa, erotus);
printf("funktio = %p\n", funktio = summa);
printf("funktio(%d, %d) = %d\n", a, b, funktio(a, b));
printf("funktio = %p\n", funktio = erotus);
printf("funktio(%d, %d) = %d\n", a, b, funktio(a, b));
printf("laske(%d, %d, summa) = %d\n", a, b, laske(a, b, summa));
return 0;
}Aihe on jo aika vanha, joten et voi enää vastata siihen.