ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
编译器会根据节 2.11中提到的因素决定内联哪些函数。此外,还有一些限制可以取消函数被自动内联或基于关键字内联的资格。
如果函数符合以下条件,编译器将保留调用:
如果函数具有会给编译器带来困难情形的特性,编译器也不会内联调用:
无论其他指示如何(包括被调用函数上的 FUNC_ALWAYS_INLINE pragma 或 always_inline 属性),使用 NOINLINE pragma 注释的语句中的调用都不会被内联。
如果使用 FORCEINLINE pragma 注释的语句中的调用未因上述原因之一被取消资格,即使被调用函数具有 FUNC_CANNOT_INLINE pragma 或 cannot_inline 属性,则该调用都是被内联的。
换句话说,语句级 pragma 会覆盖函数级 pragma 或属性。如果 NOINLINE 和 FORCEINLINE 都适用于同一条语句,则首先出现的语句被使用,其余语句被忽略。