编译器警告(等级 4)C4714
标记为 __forceinline 的函数“function”未内联
为内联展开选定了给定函数,但编译器没有执行内联。
虽然对编译器而言,__forceinline 是比 __inline更强的指示,但编译器仍然按照自己的判断执行内联,未使用试探法确定内联此函数的优点。
在某些情况下,编译器将会因为机理上的原因而不内联某个特定函数。例如,编译器将不内联:
会导致 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()
{
}