Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: inline ja funktiopointteri

pulis [23.12.2008 20:37:10]

#

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ä?

Grez [23.12.2008 21:39:26]

#

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.

Metabolix [24.12.2008 00:00:07]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta