Поделиться через


Предупреждение компилятора (уровень 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()
{
}