内联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