Errore del compilatore C3163
'construct': attributi incoerenti alla dichiarazione precedente
Attributi applicati a un conflitto di definizione con gli attributi applicati a una dichiarazione.
Un modo per risolvere C3163 consiste nell'eliminare gli attributi nella dichiarazione di inoltro. Qualsiasi attributo in una dichiarazione forward deve essere minore degli attributi nella definizione o, al massimo, uguale a essi.
Una possibile causa dell'errore C3163 riguarda il linguaggio di annotazione del codice sorgente Microsoft (SAL). Le macro SAL non si espandono a meno che non si compili il progetto usando il /analyze
flag . Un programma che viene compilato in modo pulito senza /analyze
potrebbe generare un errore C3163 se si tenta di ricompilarlo con l'opzione /analyze
. Per altre informazioni su SAL, vedere Annotazioni SAL.
Esempio
L'esempio seguente genera l'errore 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() {}