Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Micilini Roll

O que realmente faz um "inline"?

Recommended Posts

Olá pessoal, estava estudando sobre Objective-c (que tambem tem haver com o C/C++) pois ele é uma de suas variações...

 

Estava pesquisando na net sobre este metodo inline:

Static inline int metodo(){

return 1+1;

}

Pelo meu ver, ele funciona como se fosse algum metodo, função ou blocos. Ao meu ver ele se parece muito com "blocos". Eu estava pesquisando na internet e vi que um gringo disse a seguinte frase:

 

 

Ao declarar uma função inline você dizer ao compilador para substituir o código completo dessa função diretamente para o lugar de onde foi chamado. Este é um recurso bastante avançado que requer a compreensão de programação de baixo nível.

 

Então deixa eu ver se eu entendi direto:

 

Quando chamamos um função o compilador realiza uma especie de GO TO, e vai diretamente para a linha aonde esta localizada a função e a executa certo? exemplo: "Estou no ponto A e quero ir ao Ponto B, para isso eu me locomovo do ponto A ate o ponto B"

 

Agora quando executamos uma função do tipo inline é como se aquela função viesse ate nós? exemplo: "Estou no ponto A e quero ir ao Ponto B, para isso o Ponto B vem ate mim sem a necessidade de me locomover?" seria isso o que o gringo realmente disse?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É por aí, mesmo.

 

Ao compilar um código onde há uma função, essa função é atribuída a um Label. Sempre que o código chama essa função é feito um jump (literalmente um GoTo) para esse label.

 

Usando o modificador "inline", em vez de ser feito o jump, o compilador inclui o código da função junto ao trecho do código que está sendo compilado, dispensando o uso do jump.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explicando bem leigamente, quando o programa é compilado, copia o código da função para TODOS os locais dentro do bloco principal em que ela foi chamada. Fazendo uma comparação boba funciona como o #DEFINE só que para blocos de códigos inteiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.