• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Louise

funções inline

6 mensagens neste tópico

Bom dia.

Gostaria que alguem me explica-se o que são funções inline. Se permite reduzir o tempo de execução do programa, se alguma alteração que eu faça exige nova recompilação do programa e posso usar com qualquer função ou só com funções pequenas :hmm:.

Desde já obrigada ;).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagina uma função que receba dois inteiros e retorne a sua soma.

int add(int a, int b)
{
   return a+b;
}

Imagina que usas a função mesmo muitas vezes durante a execução do programa. Cada vez que o programa tem de chamar a função, passar os parametros, e receber o valor retornado por esta, perde-se algum tempo.

Com a instrução inline, o compilador vai substituir a chamada da função no código pelo código real da função, de forma a que não tenha de ser feita esta passagem entre função e código principal. Assim poupa-se algum tempo com a desvantagem do executável do programa ser ligeiramente superior.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

de notar que será sempre o compilador a decidir se a função será inline ou não (ou seja, podes usar o inline em qualquer função mas nem sempre obterás o efeito desejado), e que precisas de recompilar todos os módulos que usam essa função sempre que alteras o programa (em vez de teres que compilar apenas o módulo onde a função está definida).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e que precisas de recompilar todos os módulos que usam essa função sempre que alteras o programa (em vez de teres que compilar apenas o módulo onde a função está definida).

Boa noite. Sabes me explicar pk isso acontece???? bigada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa noite. Sabes me explicar pk isso acontece???? bigada.

porque o código deixa de estar num único módulo (havendo apenas uma referência à função nos módulos que precisam de uma determinada função) e passa a estar disperso por todos os módulos, no local onde a função é invocada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Logicamente. Se a chamada da função é substituida pelo próprio código, alterando o código da função, deve ser alterado em todos os locais onde está. Com a chamada da função isto não acontece porque a chamada é igual, a não ser que a assinatura da função seja alterada.

Também não podes usar inline para fazer libs, porque quando tentares usar a função ela não existe, e rebenta na linkagem.

Cuidado ao fazer inline de funções recursivas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora