Inline vs __inline vs __inline__ vs __forceinline?
Каковы различия между этими четырьмя встроенными (ключевыми) словами?
inline
, __inline
, __inline__
, __forceinline
.
Ответы
Ответ 1
inline
- это ключевое слово, в С++ и C99.
__inline
- ключевое слово, зависящее от поставщика (например MSVC) для встроенной функции в C, поскольку C89 ее не имеет.
__inline__
похож на __inline
, но из другого набора компиляторов.
__forceinline
- это другое ключевое слово, зависящее от поставщика (главным образом, MSVC), которое будет применять большее усилие для включения функции, чем подсказка __inline
(например, встроенная, даже если это приведет к ухудшению кода).
Там также __attribute__((always_inline))
в GCC и clang.
Ответ 2
__inline
, __inline__
и __forceinline
являются специфичными для реализации. Из-за двойного подчеркивания все идентификаторы, зарезервированные для реализации, поэтому не должны конфликтовать с идентификаторами, используемыми в приложениях.
inline
- единственное ключевое слово С++.
Ответ 3
Для компилятора Visual Studio это означает:
Подробнее см. http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx