Funções

1. Funções

José
DeuRuimDotCom

(usa Linux Mint)

Enviado em 23/10/2019 - 23:07h

Peço licença a todos para questionar os mais entendidos sobre se atualmente vale a pena declarar funções "inline" em linguagem C, considerando implementações de compiladores atuais.
Grato.


  


2. Re: Funções

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/10/2019 - 02:28h

Eu comecei a ensaiar uma resposta, mas percebi que estava discorrendo sobre C++ como resposta a uma pergunta sobre C. Como eu lembrava que uma das diferenças entre C e C++ era justamente o uso de inline, fui tentar ler sobre o uso desse recurso em C, e depois de várias horas de leitura, em vários sites diferentes, cheguei à triste conclusão de que entendi quase nada, e o que eu acho que quase cheguei a entender me assustou (e.g. se você tem uma função declarada como inline e que não seja também declarada como static num determinado arquivo, tem de ter uma outra declaração e definição externa da mesma função em outra parte do programa, mas, ao produzir o executável, fica sem saber qual das duas será chamada).

Só por essas coisas esquisitas, eu já não usaria inline num programa em C.

Curiosamente, o uso de inline em C++ me parece muito mais sadio. Sem conflitos nem comportamento indefinido, porém com o custo de complicar o processo de compilação e de linking.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: Funções

José
DeuRuimDotCom

(usa Linux Mint)

Enviado em 28/10/2019 - 21:22h

É verdade Paulo,
Nas pesquisas que fiz, também li que não se devem definir funções "inlines" em arquivos de biblioteca, pois redundaria em erro de compilação de função indefinida.
Li também que alguns compiladores costumam converter automaticamente funções em "inline", sob certos critérios de uso dela no código e visando eficiência.
Mas, de fato, do que vi ficaram mais perguntas do que respostas e não achei nada atual e que abordasse o tema de forma definitiva.
Vou deixar o tópico aberto por mais um tempo, para o caso de aparecer alguma outra contribuição.