todas tipos texto son principales para las etiquetas ejemplos cuales atributos c static extern inline-functions

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.