Entiendo que inline
en sí mismo es una sugerencia para el compilador y, a su discreción, puede o no incluir la función en línea, y también producirá un código de objeto enlazable.
Creo que static inline
hace lo mismo (puede o no estar en línea) pero no producirá un código de objeto vinculable cuando esté en línea (ya que ningún otro módulo podría vincularlo).
¿Dónde extern inline
encaja en la imagen?
Suponga que quiero reemplazar una macro de preprocesador por una función en línea y requiero que esta función se inserte (por ejemplo, porque usa las macros __FILE__
y __LINE__
que deberían resolverse para la persona que llama pero no esta función llamada). Es decir, quiero ver un error del compilador o del enlazador en caso de que la función no se inserte. ¿Hace extern inline
esto? (Supongo que, si no es así, no hay forma de lograr este comportamiento más que seguir con una macro).
¿Existen diferencias entre C ++ y C?
¿Existen diferencias entre los diferentes proveedores y versiones de compiladores?