Grazie mille, molto interessante. L'ho inserito tra i preferiti: domani lo leggerò con più attenzione e tranquillità.
Quindi inline ha l'effetto di velocizzare l'esecuzione ma ingigantire l'eseguibile, mentre se non si utilizzasse inline, il programma sarebbe meno veloce ma più leggero, giusto?Originariamente inviato da MItaly
Serve a consigliare al compilatore di effettuare l'inlining della funzione, ossia di piazzare il suo codice macchina direttamente nel flusso di codice corrente senza stare a creare una funzione separata da chiamare con l'istruzione assembly CALL, evitando così l'overhead che si genera per ogni chiamata a funzione. Di fatto l'inlining viene impiegato spesso per funzioni brevi, mentre per funzioni più lunghe si utilizza la normale chiamata a funzione per evitare di ingigantire inutilmente l'eseguibile finale.
Dopo un po' di tempo a pensarci su, credo di aver finalmente capito. Un po' laborioso il ragionamento, a causa di quei ++, ma alla fine ho compreso. Grazie.Originariamente inviato da MItaly
codice:a=2 ((a++)*(a++)) --- valuto il primo a++ --- a=3 ((2)*(a++)) --- valuto il secondo a++ --- a=4 ((2)*(3)) --- valuto l'espressione risultante --- a=4 6
Un'ultima cosa: esaminando il codice sorgente di Blender, il programma di modellazione opensource, per pura curiosità, ho trovato le righe di codice che ho postato sopra... (ext)((void)NULL) a cosa serve?