【问题标题】:Compile error "'struct' type redefinition" although it's the first definition for it编译错误“'struct'类型重新定义”虽然它是它的第一个定义
【发布时间】:2011-04-28 21:12:21
【问题描述】:

一切正常,直到我将一些代码从主文件移动到新类,然后出现以下错误:

错误 C2011: 'color1' : 'struct' 类型重新定义

struct color1
{
    color1()
    {
        red = green = blue = 0;
    }

    color1(float _red, float _green, float _blue)
    {
        red = _red;
        green = _green;
        blue = _blue;
    }

    float red, green, blue;
};

有什么想法吗?

【问题讨论】:

  • 它可能在一个被包含两次的文件中。将编译指示守卫添加到它所在的文件中。
  • 显然,您的程序还有更多内容。您能否将您的程序缩减为显示您看到的错误的最小完整程序,然后在此处发布该程序?
  • ... 使用构造函数初始化列表,Luke ...

标签: c++


【解决方案1】:

如果编译器说它被重新定义了,那么它可能是。

我的心理调试技能告诉我,您将结构从源文件移动到头文件,而忘记了该头中的包含保护,然后在源文件中包含多次。

编辑:作为一般规则,我通常建议避免使用前导下划线。在某些情况下(例如后跟大写字母),它们是为实现而保留的,最简单的方法是永远不要使用前导 _ 而不是希望您记住所有规则。

【讨论】:

  • +1 表示可能的答案,另一个 +1 表示下划线建议。不幸的是,总体上限为 +1。
  • +1 建议避免使用前导下划线。由于我不清楚的原因,我看到很多程序员继续使用这些名称,而类似的方法(但总是合法且危险性较小)例如在末尾添加它们。
【解决方案2】:

从上面的 sn-p 中我无法推断出有什么问题。

但通常此错误意味着您多次包含相同的头文件。你不会忘记为包含文件添加标准保护吗?

#ifndef MY_HEADER_FILE_
#define MY_HEADER_FILE_

// here is your header file code

#endif

【讨论】:

  • @Oli Charlesworth:我看过上面的答案,这听起来很合理。还将从我自己的代码中删除它们))
【解决方案3】:

您可以在头文件中定义结构。 有

 #pragma once

在定义结构的头部的开头,它解决了问题。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,幸运的是没过多久就发现这只是一个愚蠢的错误。

    问题是我在另一个驱动器 (D:) 上备份了我的项目,但是当明确定义完整路径时,所有代码都设置在驱动器 C: 上。我在 C: 路径上创建它并且一直使用这种方式,但不小心从 D 中打开项目并认为它是同一件事,所以在编译时它包含了两次,因为在某些情况下它包含了来自C: 路径和其他从 D: 路径。

    【讨论】:

      【解决方案5】:

      我也遇到了同样的问题,结果我的头球后卫犯了一个错误。例如,不要写:

      #ifndef COMMAND_H
      #define COMMAND_H
      
      // My code
      
      #endif // COMMAND_H
      

      我犯了一个有点难以辨认的错字:

      #ifndef COMNAND_H
      #define COMMAND_H
      
      // My code
      
      #endif // COMMAND_H
      

      也就是说,COMNAND_H 不是 COMMAND_H。它应该是字母 M 而不是字母 N。我解决了这个问题,一切都很好。希望这个答案对您的案子有帮助!!!

      【讨论】:

        猜你喜欢
        • 2019-08-27
        • 1970-01-01
        • 1970-01-01
        • 2018-07-13
        • 2017-12-08
        • 2021-07-07
        • 1970-01-01
        • 2019-01-25
        • 1970-01-01
        相关资源
        最近更新 更多