Erro do compilador C3163
'construct': atributos inconsistentes com declaração anterior
Os atributos aplicados a uma definição entram em conflito com os atributos aplicados a uma declaração.
Uma maneira de resolver o C3163 é eliminar atributos na declaração de encaminhamento. Todos os atributos em uma declaração de encaminhamento devem ser menores do que os atributos na definição ou, no máximo, iguais a eles.
Uma possível causa do erro C3163 envolve a SAL (linguagem de anotação de código-fonte) da Microsoft. As macros SAL não se expandem, a menos que você compile seu projeto usando o sinalizador /analyze
. Um programa que é compilado de forma limpa sem /analyze
pode gerar C3163 se você tentar recompilá-lo com a opção /analyze
. Para obter mais informações, consulte Anotações SAL.
Exemplo
A amostra a seguir gera C3163.
// C3163.cpp
// compile with: /clr /c
using namespace System;
[CLSCompliant(true)] void f();
[CLSCompliant(false)] void f() {} // C3163
// try the following line instead
// [CLSCompliant(true)] void f() {}