Error del compilador C3163
'constructor': atributos incoherentes con la declaración anterior
Los atributos que se aplican a una definición entran en conflicto con los atributos que se aplican a una declaración.
Una manera de resolver el error C3163 es eliminar atributos en la declaración adelantada. Los atributos de una declaración adelantada deben ser menos que los atributos de la definición o, como máximo, los mismos.
Una posible causa del error C3163 implica el lenguaje de anotación de código fuente (SAL) de Microsoft. Las macros SAL no se expanden a menos que se compile el proyecto con la marca /analyze
. Un programa que se compila limpiamente sin /analyze
puede producir el error C3163 si intenta volver a compilarlo con la opción /analyze
. Para obtener más información sobre las anotaciones de SAL, consulte Anotaciones de SAL.
Ejemplo
El ejemplo siguiente genera el error 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() {}