You are on page 1of 2

www.tiexpert.

net

Pg. 1 de 2

Funes inline
As funes inline servem como cdigos a serem copiados ao lugar que so chamados. Funes normais quando so chamadas, o programa tem que ir at ela e executar seu cdigo, isso leva uma certa frao de tempo para acontecer o que deixa o programa com uma resposta um pouco menor. J as funes inline quando so chamadas o cdigo j est l, porque o compilador trata de copiar todo o cdigo da funo para o local onde ela est sendo chamada a partir do momento em que o cdigo compilado. Ou seja, se criarmos um cdigo contendo uma funo inline parecido com o abaixo: void mensagem (){ cout <<"Mensagem que ir aparecer na tela"; } int main (void){ mensagem (); } Quando o compilador compilar este cdigo, ele se tornar apenas: int main (void){ cout <<"Mensagem que ir aparecer na tela"; } Como se no existisse a funo, mas todo seu cdigo copiado para a posio em que chamado. Dessa forma o programa no ter que se deslocar at achar a funo porque todo seu cdigo j est escrito logo abaixo fazendo com que o tempo de resposta seja maior. Para criar uma funo inline basta fazer a mesma coisa que faramos para criar uma funo normal, a nica diferena e que antes de comearmos escrever a funo deveremos utilizar a palavra reservada inline. palavra-chave inline Em um cdigo-fonte real seria: #include <iostream> #include <cstdlib> using namespace std; inline void mensagem (){ cout <<"Hello, World!"<<endl; } int main (void){ mensagem(); system ("pause"); } Mas o aumento de desempenho vem com um certo custo de espao em memria. Queremos dizer que alm de aumentar o desempenho, tambm aumenta o tamanho do arquivo. Por isso, funes inline no so to utilizadas, ainda mais hoje em dia com computadores extremamente rpidos que conseguem chamar uma funo em pouqussimos milsimos de segundo. Outra coisa importante a saber que se colocarmos uma funo inline de, por exemplo, 100 linhas de cdigo dentro de uma iterao (repetio, loop) de 50 vezes, o prprio compilador no compilar este cdigo, pois ele entende que ser gerado um arquivo exageradamente grande com um custo de recursos do sistema desnecessrio. Para se ter uma idia. Veja o cdigo: http://www.tiexpert.net/programacao/c/funcoes-inline.php tipo de retorno void nome da funo mensagem parmetros ()

www.tiexpert.net
#include <iostream> #include <cstdlib> using namespace std; inline void mensagem (){ cout <<"Este programa foi iniciado com sucesso as "; } inline void horario (){ system ("time/t"); } inline void contador (int i){ cout <<"Esta e a operacao de soma "<<i<<" de 10"<<endl; cout <<"iniciado as "; } inline int soma (){ int a, b; cout <<"Digite o primeiro numero: "; cin >> a; cin.ignore(); cout <<"Digite o segundo numero: "; cin >> b; cin.ignore(); return a + b; } inline void resultado (int variavel){ cout <<"O resultado e "<<variavel<<endl<<endl; } inline void pausar (){ system ("pause"); }

Pg. 2 de 2

int main (void){ int c, i; mensagem(); horario (); for (i=1; i<=10; i++) { contador (i); horario(); c=soma(); resultado (c); } pausar (); } O cdigo acima foi compilado no compilador Dev-C++ 4.9.9.2 sob o sistema operacional Windows XP SP2 com otimizao de cdigo para processadores Pentium. O arquivo original, apenas com as funes inline, consumiu 476.305 bytes cerca de 465KB. O arquivo secundrio com as mesma funes, mas sem a palavra chave INLINE, compilado nas mesmas condies que o anterior, consumiu 475.997 bytes cerca de 464KB (reduziu 0,01%). Parece pouco, mas temos que levar em conta que este programa tem apenas 40 linhas. Imagine um programa real que tem vrios mdulos e milhares de linhas.
Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

http://www.tiexpert.net/programacao/c/funcoes-inline.php

You might also like