次の方法で共有


コンパイラ エラー C2084

関数 'function' は既に本体を持っています

関数は定義済みです。

Visual Studio 2002 以前、

  • コンパイラは、同じ実際の型に解決された複数のテンプレートの特殊化を受け入れますが、追加の定義はまったく使用できません。 現在、コンパイラではこれらの複数の定義が検出されます。

  • __int32int は個別の型として扱われていました。 現在、コンパイラでは、__int32int の同意語として扱われます。 つまり、関数が __int32int の両方でオーバーロードされると、コンパイラでは複数の定義が検出され、エラーが発生します。

次の例では 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) {}