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.