Udostępnij przez


Ostrzeżenie kompilatora (poziom 4) C4714

funkcja "function" oznaczona jako __forceinline nie jest podkreślona

Dana funkcja została wybrana do rozszerzania wbudowanego, ale kompilator nie wykonał tworzenia inliningu.

Mimo że __forceinline jest silniejszym wskazaniem dla kompilatora niż __inline, podkreślenie jest nadal wykonywane według uznania kompilatora, ale nie są używane heurystyka w celu określenia korzyści wynikających z tworzenia tej funkcji.

W niektórych przypadkach kompilator nie będzie w tekście określonej funkcji ze względów mechanicznych. Na przykład kompilator nie będzie wbudowany:

  • Funkcja, jeśli spowoduje to mieszanie zarówno SEH, jak i C++ EH.

  • Niektóre funkcje z skopiowanymi obiektami skonstruowanymi przekazywanymi przez wartość, gdy parametr -GX/EHs/EHa jest włączony.

  • Funkcje zwracające niewiążące obiekt według wartości, gdy parametr -GX/EHs/EHa jest włączony.

  • Funkcje z wbudowanym zestawem podczas kompilowania bez -Og/Ox/O1/O2.

  • Funkcje z listą argumentów zmiennej.

  • Funkcja z instrukcją obsługi wyjątków try (C++).

Poniższy przykład generuje C4714:

// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
   try
   {
   }
   catch (...)
   {
   }
}

void func2()
{
   func1();   // C4714
}

int main()
{
}