コンパイラ エラー C2084
関数 'function' は既に本体を持っています
関数は定義済みです。
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) {}