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