Funções (versão C/C++) Em C++ existe uma opção intermédia entre a função e uma macro. Uma função pode ser declarada inline. Nesse caso as funções têm “type checking” mas o compilador (se entender que isso é possível) substitui o código na zona de chamada à função. Exemplo: inline int print_it(float x){return printf(“%f”, x);} 1 Funções (versão C/C++) Em C/C++ uma função pode chamar-se a si própria de forma recursiva. Exemplo: A recursividade implementa um tipo especial de ciclo que por erro também pode ser infinito! Correcto: Erro: (segmentation fault) 2 Funções (versão C/C++) As funções correspondem a uma zona de memória e por isso podem também ser referenciadas por um ponteiro. Isso tem duas vantagens: Podemos criar funções cujo comportamento varia consoante a função escolhida Podemos retornar uma função a partir de uma função. Para declarar um ponteiro para função: type (*f)(type1 , type2 , ... ); f passa então a ser um ponteiro para uma função que retorna o tipo type e tendo por argumentos variáveis do tipo type1 , type2 , ... 3 Funções (versão C/C++) Exemplo: uma calculadora simples. 4