inline
Syntax:
inline int functionA( int a ) { ... }
La palabra clave inline cumple con dos funciones:
[editar] Como declaración de enlazado en línea
Cuando la palabra clave inline se encuentra calificando (precediendo) a la firma de una función, le indica al compilador que esta función tiene enlazado "en línea" dentro de las diferentes unidades de compilación (translation units). Esto significa que varias copias de la función pueden estar definidas en distintas unidades de compilación pero son tratadas por el enlazador como una ocurrencia normal, sin generar errores de compilación.
Usada de esta manera, la palabra clave inline permite definir funciones dentro de archivos de encabezado sin preocuparse por el hecho que éstos pueden ser incluídos por varias unidades de compilación diferentes.
Ejemplo:
'' en cabecera.h inline int function suma (int a, int b) { return a+b; }
cabecera.h puede ser incluído por dos unidades de compilación, calculadora.cpp e impuestos.cpp, aún cuando éstas unidades se compilen juntas (por ejemplo en un programa más grande) sin que se causen errores durante la compilación o en el proceso de enlazado. Similarmente, suma puede incluirse en una cabecera que forma parte de una biblioteca externa sin que ningún programa que use la función cause errores de compilación.
[editar] Como pista de expansión in-situ
Si la palabra clave inline se encuentra calificando (precediendo) a la firma de una función, funciona como una pista o sugerencia para que el compilador expanda el cuerpo de la función in-situ en vez de generar una llamada a la función cuando ésta es invocada. Esto es una sugerencia para el compilador solamente y éste puede ignorarla. El compilador es libre o no de aplicar esta optimización por defecto.
Una función miembro que está definida dentro de una definición de clase tiene automáticamente el calificador inline.