コンパイラの警告 (レベル 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()
{
}