inline vs __inline vs __inline__ vs __forceinline?

后端 未结 3 842
被撕碎了的回忆
被撕碎了的回忆 2021-01-30 08:29

What are the differences between these four inline (key)words?

inline, __inline, __inline__, __forceinline.

相关标签:
3条回答
  • 2021-01-30 08:37

    inline is the keyword, in C++ and C99.

    __inline is a vendor-specific keyword (e.g. MSVC) for inline function in C, since C89 doesn't have it.

    __inline__ is similar to __inline but is from another set of compilers.

    __forceinline is another vendor-specific (mainly MSVC) keyword, which will apply more force to inline the function than the __inline hint (e.g. inline even if it result in worse code).

    There's also __attribute__((always_inline)) in GCC and clang.

    0 讨论(0)
  • 2021-01-30 08:41

    For the Visual Studio compiler it means:

    • inline - suggestion to the compiler to inline your code

    • __forceinline - overrides the builtin compiler optimization and generates inline code

    For more details see: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx

    0 讨论(0)
  • 2021-01-30 08:48

    __inline, __inline__ and __forceinline are all implementation specific. Because of the double underscore they are all identifiers reserved for the implementation so shouldn't conflict with identifiers used in applications.

    inline is the only C++ keyword.

    0 讨论(0)
提交回复
热议问题