встроенный против __inline против __inline__ против __forceinline? - PullRequest
65 голосов
/ 04 мая 2010

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

inline, __inline, __inline__, __forceinline.

Ответы [ 3 ]

83 голосов
/ 04 мая 2010

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

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

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

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

Есть также __attribute__((always_inline)) в GCC и лязг.

20 голосов
/ 04 мая 2010

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

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

8 голосов
/ 04 мая 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...