編譯器警告 (層級 4) C4714

標記為 __forceinline 的函式 'function' 無法被內嵌

已選取提供的函式進行內嵌擴充,但編譯器未進行內嵌。

雖然 __forceinline 對編譯器的指示強於 __inline,編譯器還是會判斷是否進行內嵌,但沒有 Heuristic 會被用來決定內嵌此函式的益處。

在某些情況下,編譯器因為技術方面的因素而不會內嵌特定的函式。 例如,編譯器不會內嵌:

  • 會使 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()
{
}