“construct”:属性与以前的声明不一致
应用于定义的属性与应用于声明的属性发生冲突。
解决 C3163 的一种方法是消除前向声明的属性。 前向声明的任何属性都应小于定义的属性,或者至多等于这些属性。
C3163 错误的一个可能原因涉及 Microsoft 源代码注释语言 (SAL)。 除非使用 /analyze
标志编译项目,否则 SAL 宏不会展开。 如果尝试使用 /analyze
选项重新编译不使用 /analyze
来进行干净编译的程序,该程序可能会引发 C3163。 有关 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() {}