繁体   English   中英

编译错误“'struct'类型重新定义”虽然它是它的第一个定义

[英]Compile error “'struct' type redefinition” although it's the first definition for it

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

错误 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;
};

任何想法?

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

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

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

从上面的片段中我无法推断出有什么问题。

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

#ifndef MY_HEADER_FILE_
#define MY_HEADER_FILE_

// here is your header file code

#endif

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

 #pragma once

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM