Aviso do compilador (nível 4) C4714
função 'function' marcada como __forceinline não embutida
A função determinada foi selecionada para expansão embutida, mas o compilador não executou o inlining.
Embora __forceinline
seja uma indicação mais forte para o compilador do que __inline
, o inlining ainda é executado a critério do compilador, mas nenhuma heurística é usada para determinar os benefícios de embutir essa função.
Em alguns casos, o compilador não embute uma função específica por motivos mecânicos. Por exemplo, o compilador não embutirá:
Uma função se isso resultar na mistura de SEH e EH C++.
Algumas funções com objetos construídos por cópia passados por valor quando -GX/EHs/EHa está ativado.
Funções que retornam um objeto desenrolável por valor quando -GX/EHs/EHa está ativado.
Funções com assembly embutido ao compilar sem -Og/Ox/O1/O2.
Funções com uma listas de argumentos variáveis.
Uma função com uma instrução
try
(tratamento de exceção C++).
O seguinte exemplo gera o erro C4714:
// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
try
{
}
catch (...)
{
}
}
void func2()
{
func1(); // C4714
}
int main()
{
}