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