tipos - ¿Cuál es la diferencia entre la función en línea estática, en línea externa y la función en línea normal?
tipos de etiquetas html (1)
¿Cuál es la diferencia entre una función en static inline
, en extern inline
y una función en inline
normal?
He visto algunas explicaciones vagas sobre esto. Por lo que he entendido, static inline
no es solo una función en inline
que solo se debe hacer referencia dentro de un determinado archivo, como suele significar static
palabra clave static
. Lo mismo ocurre con extern inline
, supongo, no es la misma explicación que con las variables extern
. ¡Cualquier respuesta sería muy apreciada!
Una definición de función con static inline
define una función en línea con enlace interno. Dicha función funciona "como se esperaba" a partir de las propiedades "usuales" de estos calificadores: static
le da enlace interno y inline
hace en línea. Por lo tanto, esta función es "local" para una unidad de traducción y está en línea en ella.
Una definición de función con solo en inline
define una función en línea con enlace externo. Sin embargo, dicha definición se conoce como definición en línea y no funciona como definición externa para esa función. Eso significa que aunque esta función tenga un enlace externo, se verá como indefinida de otras unidades de traducción, a menos que proporcione una definición externa separada en algún lugar.
Una definición de función con extern inline
define una función en línea con enlace externo y al mismo tiempo esta definición sirve como definición externa para esta función. Es posible llamar a esta función desde otras unidades de traducción.
Los últimos dos párrafos significan que tiene la opción de proporcionar una única definición en línea externa para una función en línea con enlace externo, o proporcionar dos definiciones separadas para ella: una en inline
y otra extern
. En este último caso, cuando llama a la función, el compilador puede elegir cualquiera de las dos definiciones.