内联函数
inline
关键字是一个函数说明符,用于指示编译器用函数定义中的代码替换函数调用的每个实例。
备注
内联代码替换操作完全由编译器自行决定。 例如,如果某个函数的地址被采用或者由于过大而无法内联,则编译器不会内联该函数。 当编译器未内联头文件中定义的函数时,它会为链接器标记以避免违反单个定义规则 (ODR)。
对于被视为内联候选项的函数,它必须使用具有声明返回类型和任何参数类型的签名的新样式函数定义。
请使用以下形式指定内联函数:
inline
function-definition
内联函数生成的代码比等效的函数调用更快,有时代码更小:
内联函数节省了为参数和返回值准备堆栈所需的时间,以及执行函数调用的跳转和返回的时间。
即使重复多次,小的内联函数(可能是三行或更少)创建的代码比等效函数调用创建的代码更少,因为编译器不会生成处理参数和返回值的代码。
编译器可以普通函数无法使用的方式优化内联生成的函数。 编译器通常不会在不同过程之间执行优化。
不要将使用 inline
的函数与内联汇编程序代码混淆。 有关内联汇编程序的详细信息,请参阅内联汇编程序。
Microsoft 专用
Microsoft 还支持 __inline
和 __forceinline
关键字指示编译器用函数定义中的代码替换函数调用的每个实例。 __inline
关键字是 inline
的同义词。 __forceinline
关键字指示编译器放宽是否内联函数的启发式操作,但不能保证将函数内联。
为了与以前的版本兼容,除非指定了编译器选项 /Za
(禁用语言扩展),否则 _inline
和 _forceinline
分别是 __inline
和 __forceinline
的同义词。
结束 Microsoft 专用