2.8 Funciones en Línea

Uno de los principales objetivos del uso de funciones dentro de un programa es la de ahorrar algo de espacio en memoria, lo cual es algo apreciable cuando es probable que la función sea llamada muchas veces.

Sin embargo, cada vez que se llama a una función se ha de dedicar una cantidad de tiempo extra en la ejecución de una serie de instrucciones para tareas tales como el salto a la función, grabar los valores de los registros, almacenar los argumentos en la pila y volver de nuevo al punto de llamada. Cuando la función es pequeña, un gran porcentaje del tiempo de ejecución es perdido en tales tareas.

Una posible solución a este problema es el uso de la definición de macros, popularmente conocidas como macros. Las macros del preprocesador son ampliamente conocidas en C. El principal problema de las macros es que no son funciones como tal y, por tanto la típica comprobación de errores no ocurre durante la compilación del programa.


C++ aporta una solución diferente al problema. Para eliminar el coste de llamada a funciones pequeñas, C++ propone una nueva característica llamada función inline. Una función inline es una función que se expande cuando se invoca. Es decir, el complilador reemplaza la llamada a la función con el código de la función correspondiente (similar a la expresión de macros). Las funciones inline se definen como se muestran a continuación: 

 

                                                       inline cabecera-función

                                                       {

                                                                 cuerpo de la función;

                                                       }

 

Es muy sencillo implementar una función inline, Lo único que se necesita es incluir como prefijo la palabra clave  inline en la declaración de la función. Todas las funciones inline deberán ser definidas antes de que puedan ser llamadas.

Se debería tener cuidado antes de implementar una función  inline. Los beneficios en velocidad de las funciones inline disminuyen cuando la función crece en tamaño. Hasta cierto punto, el gran número de llamadas a la función puede llegar a ser pequeño si lo comparamos con la ejecución de la función, y los beneficios de las funciones inline pueden perderse.

 

La palabra clave inline simplemente envía una petición al compilador y no un comando. El compilador puede ignorar esta petición si la definición de la función es demasiado larga o demasiado complicada y compilar la función como una función normal.