Programação
 › Algoritmo  › C/C++  › Java
Web
 › HTML/XHTML  › JavaScript  › PHP
Sistema Operacional
 › Comandos de DOS  › Windows  › Linux  › Mac/BSD
Office
 › Word / Writer  › Excel / Calc
Áreas do Site
 › Download  › Fórum  › Blog
Recomendamos
Computadores e Informática em Lisboa
TI Expert » Programação » C/C++ » Funções Inline

Funções inline

As funções inline servem como códigos a serem copiados ao lugar que são chamados.

Funções normais quando são chamadas, o programa tem que ir até ela e executar seu código, isso leva uma certa fração de tempo para acontecer o que deixa o programa com uma resposta um pouco menor. Já as funções inline quando são chamadas o código já está lá, porque o compilador trata de copiar todo o código da função para o local onde ela está sendo chamada a partir do momento em que o código é compilado. Ou seja, se criarmos um código contendo uma função inline parecido com o abaixo:

void mensagem (){
cout <<"Mensagem que irá aparecer na tela";
}

int main (void){
mensagem ();
}

Quando o compilador compilar este código, ele se tornará apenas:

int main (void){
cout <<"Mensagem que irá aparecer na tela";
}

Como se não existisse a função, mas todo seu código é copiado para a posição em que é chamado. Dessa forma o programa não terá que se deslocar até achar a função porque todo seu código já está escrito logo abaixo fazendo com que o tempo de resposta seja maior.

Para criar uma função inline basta fazer a mesma coisa fariamos para criar uma função normal, a única diferença e que antes de começarmos escrever a função deveremos utilizar a palavra reservada inline.

palavra-chave tipo de retorno nome da função parâmetros
inline void mensagem ( )

Em um código-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 espaço em memória. Queremos dizer que além de aumentar o desempenho, também aumenta o tamanho do arquivo. Por isso, funções inline não são tão utilizadas, ainda mais hoje em dia com computadores extremamente rápidos que conseguem chamar uma função em pouquíssimos milésimos de segundo.

Outra coisa importante a saber é que se colocarmos uma função inline de, por exemplo, 100 linhas de código dentro de uma iteração (repetição, loop) de 50 vezes, o próprio compilador não compilará este código, pois ele entende que será gerado um arquivo exageradamente grande com um custo de recursos do sistema desnecessário.

Para se ter uma idéia. Veja o código:

#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");
}

int main (void){
    int c, i;
    mensagem();
    horario ();
    for (i=1; i<=10; i++) {
        contador (i);
        horario();
        c=soma();
        resultado (c);
    }
    pausar ();
}
Faça o Download deste Código

O código acima foi compilado no compilador Dev-C++ 4.9.9.2 sob o sistema operacional Windows XP SP2 com otimização de código para processadores Pentium.

O arquivo original, apenas com as funções inline, consumiu 476.305 bytes cerca de 465KB. O arquivo secundário com as mesma funções, mas sem a palavra chave INLINE, compilado nas mesmas condições 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 vários módulos e milhares de linhas.

Creative Commons License
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons.

Faça o download da versão em PDF Indique nosso site Gostou?
Indique nosso site!
Este artigo foi
lido 33655 vezes
Bookmark e Compartilhe

Páginas Relacionadas

Enquete
O Google Chrome OS irá desbancar o Microsoft Windows 7?
» ProgramaçãoAlgorítmo | C/C++ | Java

» WebHTML/XHTML | JavaScript | PHP

» Sistema OperacionalComandos de DOS | Windows | Linux | Mac/BSD

» OfficeWord/Wirter | Excel/Calc

» Áreas do SiteDownloads | Fórum | Blog