¿Nunca se debe usar la función en línea estática?
Hay dos implicaciones de usar elinline
palabra clave (§ 7.1.3 / 4):
Por lo general, cualquier compilador convencional sustituirá el cuerpo de la función en el punto de llamada si es necesario, por lo que la función de marcadoinline
meramente para#1
No es realmente necesario.
Además w.r.t#2
, Como entiendo cuando usted declara una función comostatic inline
función,
losstatic
palabra clave en la función obliga a lainline
función para tener un enlace interno (Las funciones en línea tienen un enlace externo) Cada instancia de tal función se trata como una función separada (La dirección de cada función es diferente.) y cada instancia de estas funciones tiene sus propias copias de variables locales estáticas y cadenas literales (una función en línea tiene una sola copia de estos)
Así, tal función actúa como cualquier otra.static
función y la palabra claveinline
Ya no tiene importancia, se vuelve redundante.
Entonces, prácticamente marcando una funciónstatic
yinline
Ambos no tienen ningún uso en absoluto. O bien debería serstatic
(no más preferido) oinline
(Más preferido)
Entonces esta usandostatic
yinline
juntos en una funciónprácticamente ¿inútil?