【发布时间】:2011-02-15 10:45:44
【问题描述】:
这四个内联(关键字)词有什么区别?
inline、__inline、__inline__、__forceinline。
【问题讨论】:
-
你也应该问问社区对内联的使用建议是什么。
这四个内联(关键字)词有什么区别?
inline、__inline、__inline__、__forceinline。
【问题讨论】:
inline 是 C++ 和 C99 中的 关键字。
__inline 是 C 中内联函数的供应商特定关键字(例如 MSVC),因为 C89 没有它。
__inline__ 类似于__inline,但来自另一组编译器。
__forceinline 是另一个特定于供应商(主要是 MSVC)的关键字,与 __inline 提示相比,它对内联函数的作用更大(例如内联,即使它会导致更糟糕的代码)。
在 GCC 和 clang 中也有 __attribute__((always_inline))。
【讨论】:
__inline__ 作为 C99 之前的 inline 的替代品
__inline、__inline__ 和 __forceinline 都是特定于实现的。由于双下划线,它们都是为实现保留的标识符,因此不应与应用程序中使用的标识符冲突。
inline 是唯一的 C++ 关键字。
【讨论】:
对于 Visual Studio 编译器,这意味着:
inline - 建议编译器内联您的代码
__forceinline - 覆盖内置编译器优化并生成内联代码
更多详情见:http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx
【讨论】: