Funciones insertadas
La palabra clave inline
es un especificador de función que indica al compilador que sustituya el código en la definición de función para cada instancia de una llamada a función.
Comentarios
La sustitución del código alineado solo se produce a discreción del compilador. Por ejemplo, el compilador no alineará una función si se usa su dirección o si es demasiado grande para alinearla. Cuando el compilador no alinea una función definida en un archivo de encabezado, se marca para que el enlazador evite infracciones de la regla de una definición (ODR).
Para que una función se considere candidata para la alineación, debe usar la definición de función de estilo nuevo con una firma que declare el tipo de valor devuelto y cualquier tipo de parámetro.
Use este formato para especificar una función insertada:
inline
function-definition
Las funciones insertadas generan código más rápido y a veces más pequeño que la llamada de función equivalente:
Las funciones insertadas ahorran el tiempo necesario para preparar la pila para los argumentos y un valor devuelto, y el tiempo para ejecutar el salto y el retorno de una llamada de función.
Incluso si se repiten varias veces, las funciones insertadas pequeñas, de quizás tres o menos líneas, generan menos código que la llamada a función equivalente, porque el compilador no genera código para controlar los argumentos y el valor devuelto.
El compilador puede optimizar las funciones generadas insertadas de maneras que no están disponibles para las funciones normales. Normalmente, el compilador no realiza optimizaciones entre distintos procedimientos.
No confunda funciones que usan inline
con código ensamblador alineado. Para obtener más información sobre el ensamblador alineado, vea Ensamblador insertado.
Específico de Microsoft
Microsoft también admite las palabras clave __inline
y __forceinline
para indicar al compilador que sustituya el código en la definición de función para cada instancia de una llamada a función. La palabra __inline
clave es un sinónimo de inline
. La palabra clave __forceinline
indica al compilador que relaje la heurística sobre si se debe insertar la función, aunque no garantiza que vaya a insertar una función.
A efectos de compatibilidad con versiones anteriores, _inline
y _forceinline
son sinónimos de __inline
y __forceinline
, respectivamente, a menos que se especifique la opción del compilador/Za
(Deshabilitar extensiones de lenguaje).
FIN de Específicos de Microsoft