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


Ошибка компилятора C2084

Функция "функция" уже имеет тело

Замечания

Функция уже определена.

До Visual Studio 2002,

  • Компилятор принимает несколько специализаций шаблонов, которые разрешаются в один и тот же фактический тип, хотя дополнительные определения никогда не будут доступны. Теперь компилятор обнаруживает эти несколько определений.

  • __int32 и int рассматривались как отдельные типы. Компилятор теперь рассматривается __int32 как синоним int. Это означает, что компилятор обнаруживает несколько определений, если функция перегружена в обоих __int32 случаях и int дает ошибку.

Пример

В следующем примере создается C2084:

// C2084.cpp
void Func(int);
void Func(int) {}   // define function
void Func(int) {}   // C2084 second definition

Чтобы исправить эту ошибку, удалите повторяющееся определение:

// C2084b.cpp
// compile with: /c
void Func(int);
void Func(int) {}