[英]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.