内联vs __inline vs __inline__ vs __forceinline?

这四个内联(关键)词之间有什么区别?

inline__inline inline__inline inline __inline__inline__ __forceinline

inline是C ++和C99中关键字。

__inline是C语言中内联函数的特定于供应商的关键字(例如MSVC ),因为C89没有它。

__inline____inline__类似,但来自另一组编译器。

__forceinline是另一个特定于供应商(主要是MSVC)的关键字,它将比__inline提示更加强制内联函数(例如内联,即使导致更糟的代码)。

在GCC和__attribute__((always_inline))也有__attribute__((always_inline))

__inline__inline____forceinline都是特定于实现的。 由于双下划线,它们都是为实现保留的标识符,所以不应与应用程序中使用的标识符冲突。

inline是唯一的C ++关键字。

对于Visual Studio编译器来说,这意味着:

  • 内联 – build议编译器内联您的代码

  • __forceinline – 重写内置的编译器优化并生成内联代码

有关更多详细信息,请参阅: http : //msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx