tuli tuossa äsken kirjoitettua tällainen hassu koodi..
inline void drawground1 (const GLfloat pox, const GLfloat poy) { // funktion koodit } void world::draw_selection(){ ... void (*dg1) (const GLfloat, const GLfloat); // hiukan pointterikikkailua void (*dg2) (const GLfloat, const GLfloat); dg1=&drawground3; dg2=&drawground1; ... dg1 (posx, posy); ... }
mietityttää vaan että toimiiko tuo inline noitten "pointer to function" yhteydessä?
pulis kirjoitti:
mietityttää vaan että toimiiko tuo inline noitten "pointer to function" yhteydessä?
Nopealla vilkaisulla löytyy kahta teoriaa. Toinen on että ei toimi ja toinen että kääntäjä jättää inlinen tuossa tapauksessa huomiotta. Kuvittelisin että kolmas vaihtoehto olisi että se tekisi normaali funktion pointtereita varten ja inlinen paikallista koodia varten.
Joka tapauksessa aivan selvää on, että jos annat vaikka toiselle ohjelmalle tai kirjastolle pointterin esim. callbackia varten, niin sen toisen ohjelman koodi ei voi taikaiskusta muuttua funktiota inlinena käyttäväksi.
Grez kirjoitti:
Kuvittelisin että kolmas vaihtoehto olisi että se tekisi normaali funktion pointtereita varten ja inlinen paikallista koodia varten.
Luulen, että useimmat nykykääntäjät tekevät juuri näin. GCC ei tosin taida huomioida koko inline-määrettä ilman optimointilippuja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.