编译器错误 C2011

“identifier”:“type”类型重定义

标识符已定义为 type。 检查标识符的重定义。

如果不止一次将头文件或类型库导入同一个文件,则也有可能生成 C2011。 若要防止多次包含头文件中定义的类型,可使用头文件中的 include guards 或 #pragmaonce 指令。

如果需要查找重定义的类型的初始声明,则可以使用 /P 编译器标志生成传递给编译器的预处理输出。 你可以使用文本搜索工具在输出文件中查找重定义的标识符的实例。

下面的示例生成了 C2011 并演示了修复此错误的一种方法:

// C2011.cpp
// compile with: /c
struct S;
union S;   // C2011
union S2;   // OK