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 это означает:
встроенный - предложение компилятору встроить ваш код
__ forceinline - переопределяет встроенную оптимизацию компилятора и генерирует встроенный код