【问题标题】:redefinition; previous definition was 'typedef' error [closed]重新定义;以前的定义是'typedef'错误[关闭]
【发布时间】:2014-04-06 11:11:28
【问题描述】:

我收到以下错误:

错误 C2365:“十进制”:重新定义;之前的定义是 'typedef'

对于头文件中的如下定义:

enum DATA_TYPE {DECIMAL, HEXA, STRING};

我知道这个错误是由重复定义引起的,但是没有另一个类似的已知定义,并且这个头文件中没有包含文件。

还有哪些其他原因会导致该错误?

【问题讨论】:

  • 您项目中的其他人或您包含的标题正在执行类似typedef float DECIMAL 的操作。你也许应该选择一个不同的名字。
  • 看起来您已经使用 typedef 为某处的类型创建了别名 DECIMAL。您应该向我们展示更多代码。
  • 查看gcc -E file.c 的输出 - 这会很有帮助。您在 typedef 中包含一些定义别名 DECIMAL 的头文件。

标签: c enums typedef redefinition


【解决方案1】:

在您包含的头文件或它们无限包含的文件中的某处,将 DECIMAL 定义为 typedef。

不要去找它!好吧,如果你真的想这样做,但你将无能为力。只需将您的枚举重命名为 DT_DECIMAL 之类的合理名称即可。

如果您真的想继续使用 DECIMAL 并避免此错误,有两种策略。一种是使用命名空间,将你的名字放在与其他讨厌的定义不同的命名空间中。

另一种(老派)方法是使用掩码宏定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多