встроенный по сравнению с __ встраивают по сравнению с __ встроенный __ по сравнению с __ forceinline?

Каковы различия между этими четырьмя встроенными (ключевыми) словами?

inline, __inline, __inline__, __forceinline.

66
задан Xavier Ho 4 May 2010 в 12:24
поделиться

3 ответа

inline - это ключевое слово в C ++ и C99.

__ inline - это ключевое слово, зависящее от производителя (например, MSVC ) для встроенной функции в C, поскольку в C89 его нет.

__ inline __ аналогичен __ inline , но взят из другого набора компиляторов.

__ forceinline - это еще одно ключевое слово, зависящее от поставщика (в основном MSVC), которое будет применять больше усилий для встраивания функции, чем подсказка __ inline (например, встроенная, даже если это приведет к худшему коду).

Также есть __ attribute __ ((always_inline)) в GCC и clang.

83
ответ дан 24 November 2019 в 15:02
поделиться

__ inline , __ inline __ и __ forceinline все зависят от реализации. Из-за двойного подчеркивания все они являются идентификаторами, зарезервированными для реализации, поэтому не должны конфликтовать с идентификаторами, используемыми в приложениях.

inline - единственное ключевое слово C ++.

20
ответ дан 24 November 2019 в 15:02
поделиться

Для компилятора Visual Studio это означает:

  • встроенный - предложение компилятору встроить ваш код

  • __ forceinline - переопределяет встроенную оптимизацию компилятора и генерирует встроенный код

Подробнее см .: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx

8
ответ дан 24 November 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: