编译器警告(等级 4)C4714
函数“function”标记为 __forceinline 未内联
已选择给定函数进行内联扩展,但编译器未执行内联。
虽然与 __inline
相比,__forceinline
向编译器发出更强力的指示,但仍然由编译器自行决定是否执行内联,并且未使用试探法来确定内联此函数的优点。
在某些情况下,编译器出于机械原因不会内联特定函数。 例如,编译器不会内联:
会导致混合 SEH 和 C++ EH 的函数。
当 -GX/EHs/EHa 处于开启状态时,按值传递复制构造对象的某些函数。
当 -GX/EHs/EHa 处于开启状态时,按值返回不可展开对象的函数。
在没有 -Og/Ox/O1/O2 的情况下编译时使用内联程序集的函数。
具有变量参数列表的函数。
具有
try
(C++ 异常处理)语句的函数。
以下示例生成 C4714:
// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
try
{
}
catch (...)
{
}
}
void func2()
{
func1(); // C4714
}
int main()
{
}