Newsgroup: it.comp.lang.c++
Titolo: Funzioni inline - principiante

Salve a tutti. Sono un programmatore C++ ancora inesperto- vorrei sapere
qualcosa in più sulle funzioni inline- ossia, che vantaggio c'e' a
dichiararle nel corpo della classe, rispetto alle funzioni 'normali' ? tutto
qui.
Grazie per l'attenzione
Francesco
gi...@tin.it


Il Platform Builder per WinCE 2.11 viene distribuito su 4 CD.
Gli add-on per Visual C++6 e VisualBasic 6 su un CD ciascuno.
Assumendo per amore della discussione che sia LEGALE distribuire
software di cui si possiede la licenza, dubito che tu abbia una
casella di posta adatta per contenere tanto materiale.
Mai pensato di comprarlo?
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

qui.
La keyword inline serve a chiedere al compilatore di non generare una
normale chiamata di funzione, ma di inserire il codice della stessa nel
posto in cui avviene la chiamata (per ogni chiamata).
es.
inline void Pippo() {
  cout << 1+2;
}
void main() {
  /* ... */
  Pippo();
  /* ... */
}
La main viene trasformata dal compilatore in
void main() {
  /* ... */
  cout << 1+2;
  /* ... */
}
e quindi compilata. Normalmente invece al posto del corpo della
funzione inline verrebbe inserita una CALL.
Il vantaggio e` che si evita l'overhead imposto da una chimata di funzione,
ma presenta lo svantaggio di aumentare le dimensioni dell'eseguibile e quindi
le funzioni inline vanno utilizzate con attenzione e solo nei punti chiave.
Infine una nota:
Perche` una funzione membro venga espansa inline non e` necessario
implementarla nella dichiarazione di classe; e` possibile eseguire semplicemente
una dichiarazione e poi implementarla fuori dalla dichiarazione di classe
utilizzando esplicitamente la keyword inline:
inline <ReturnType> <NameClass>::<MemberFunc>(/* ... */) {
  /* ... */
}
Il vantaggio e` quello di rendere piu` leggibile la dichiarazione di
classe (cosa utile per rapide consultazioni dell'header).
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

 vorrei sapere qualcosa in più sulle funzioni inline
Sono funzioni il cui corpo viene praticamente inserito nel codice in
luogo della chiamata e serve a migliorare l'efficienza. Attenzione però
che la direttiva inline è solo un suggerimento al compilatore il quale
può tranquillamente decidere di ignorarla.
EMG

Ciao a tutti,
cerco urgentemente kit di sviluppo per Windows CE (add on di Visual
C++ 6.0), qualcuno sa indicarmi dove poterlo trovare o (meglio), se
qualcuno di voi lo ha a disposizione potrebbe inviarmelo via e-mail.
Ringrazio tutti anticipatamente
Giuseppe Truono

 
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own
Perchč, se aveva la casella abbastanza grossa, lo spedivi? :-)


ICQ #34602650

 Perchè, se aveva la casella abbastanza grossa, lo spedivi? :-)
Se hai a disposizione un collegamento a inet permanente che problema c'è
a spedire? Casomai è la casella postale ricevente che di sicuro
esplode...


inline, 
Piu` che di implementazioni parlerei di funzioni...
Comunque in generale non vengono espanse inline le funzioni contenenti
cicli (almeno col borland C++).


 Paolo
Aaargh! Usi troppo Borland!!!
Borland C++ č orribile in questo senso. Non puň espandere quasi niente
inline -solo funzioni che non contengono switch, while, for, goto, do,
assembly, troppi if (3/4 in genere)-, ma altri compilatori DJGPP, Visual
C++ o Watcom C++ non risentono cosě pesantemente di queste limitazioni.
Aldo.

C++ o Watcom C++ non risentono cosě pesantemente di queste limitazioni.
In effetti apparentemente sembra che il Borland imponga molte limitazioni,
tuttavia vorrei farti notare che spesso non si trattano di limitazioni cosi`
arbitrarie. Ad esempio se una funzione contiene un ciclo non ha di per se molto
senso espanderla inline perche` il costo del ciclo sara` in generale di qualche
ordine di grandezza maggiore del costo della chiamata di funzione.
Analogamente funzioni gia` leggermente complesse (diciamo 3/4 if) hanno
gia` un costo rilevante rispetto a quello della chiamata di funzione.
