¿Cuáles son las diferencias entre estas cuatro palabras en línea (clave)?inline vs __inline vs __inline__ vs __forceinline?
inline
, __inline
, , __forceinline
.
¿Cuáles son las diferencias entre estas cuatro palabras en línea (clave)?inline vs __inline vs __inline__ vs __forceinline?
inline
, __inline
, , __forceinline
.
inline
es la palabra clave, en C++ y C99.
__inline
es una palabra clave específica del proveedor (por ejemplo, MSVC) para la función en línea en C, ya que C89 no la tiene.
es similar a __inline
pero es de otro conjunto de compiladores.
__forceinline
es otra palabra clave específica del proveedor (principalmente MSVC), que aplicará más fuerza para alinear la función que la sugerencia __inline
(por ejemplo, en línea aunque dé como resultado un código peor).
También hay __attribute__((always_inline))
en GCC y clang.
__forceinline es una pista más contundente que la línea, pero sigue siendo solo una pista (http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.80%29.aspx). –
Quizás considere cambiar el idioma "Microsoft-specific" a "específico del proveedor" o algo así. Muchos de los conjuntos de herramientas de desarrollo cruzado que uso también soportan __inline y __forceinline. El mundo es más grande que MSOFT ;-) – Dan
Oops accidentalmente CW-ed la publicación. Lo que sea. – kennytm
__inline
, y __forceinline
son todos específicos de la implementación. Debido al doble guión bajo, todos son identificadores reservados para la implementación, por lo que no deben entrar en conflicto con los identificadores utilizados en las aplicaciones.
inline
es la única palabra clave de C++.
Para el compilador de Visual Studio que significa:
línea - sugerencia de que el compilador inline su código
__forceinline - anula la optimización del compilador incorporado y genera código en línea
Para más det ails ver: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx
También debe preguntar a la comunidad cuáles son las recomendaciones para el uso de inline. –