コンパイラの警告 (レベル 4) C4714

関数 'function' がインライン関数ではなく、__forceinline としてマークされています

指定された関数はインライン展開用に選択されましたが、コンパイラはインライン化を実行しませんでした。

__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()
{
}