Bagikan melalui


Compiler Warning (level 4) C4714

fungsi 'fungsi' yang ditandai sebagai __forceinline tidak sebaris

Fungsi yang diberikan dipilih untuk ekspansi sebaris, tetapi pengkompilasi tidak melakukan inlining.

Meskipun __forceinline merupakan indikasi yang lebih kuat untuk kompilator daripada __inline, inlining masih dilakukan atas kebijaksanaan kompilator, tetapi tidak ada heuristik yang digunakan untuk menentukan manfaat dari inlining fungsi ini.

Dalam beberapa kasus, pengkompilasi tidak akan sebaris fungsi tertentu karena alasan mekanis. Misalnya, pengkompilasi tidak akan sebaris:

  • Fungsi jika akan mengakibatkan pencampuran SEH dan C++ EH.

  • Beberapa fungsi dengan salin objek yang dibangun diteruskan oleh nilai ketika -GX/EHs/EHa aktif.

  • Fungsi yang mengembalikan objek yang tidak dapat dilepaskan berdasarkan nilai ketika -GX/EHs/EHa aktif.

  • Fungsi dengan rakitan sebaris saat mengkompilasi tanpa -Og/Ox/O1/O2.

  • Fungsi dengan daftar argumen variabel.

  • Fungsi dengan try pernyataan (penanganan pengecualian C++).

Sampel berikut menghasilkan C4714:

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

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

int main()
{
}