Ошибка компилятора C3163
"конструктор": атрибуты, несовместимые с предыдущим объявлением
Атрибуты, применяемые к определению, конфликтуют с атрибутами, применяемыми к объявлению.
Одним из способов разрешения C3163 является устранение атрибутов в объявлении пересылки. Любые атрибуты в объявлении пересылки должны быть меньше атрибутов определения или, в большинстве случаев, равными им.
Возможная причина ошибки C3163 включает язык заметок исходного кода Майкрософт (SAL). Макросы SAL не развертываются, если только вы не компилируете проект с помощью флага /analyze
. Программа, скомпилированная без /analyze
исключения C3163 при попытке перекомпилировать ее с /analyze
помощью параметра. Дополнительные сведения о SAL см. в заметках SAL.
Пример
Следующий пример приводит к возникновению ошибки 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() {}