编译器错误 C2011
“identifier”:“type”类型重定义
标识符已定义为 type
。 检查标识符的重定义。
如果不止一次将头文件或类型库导入同一个文件,则也有可能生成 C2011。 若要防止多次包含头文件中定义的类型,可使用头文件中的 include guards 或 #pragma
once 指令。
如果需要查找重定义的类型的初始声明,则可以使用 /P 编译器标志生成传递给编译器的预处理输出。 你可以使用文本搜索工具在输出文件中查找重定义的标识符的实例。
下面的示例生成了 C2011 并演示了修复此错误的一种方法:
// C2011.cpp
// compile with: /c
struct S;
union S; // C2011
union S2; // OK