首页 > 解决方案 > 尝试编译时出现 typedef 重新定义错误

问题描述

字典.h:

#ifndef __DICTIONARY_H
#define __DICTIONARY_H

typedef struct Dictionary Dictionary;
.
.
.
#endif

字典.c:

typedef struct Dictionary{

    int* keys;
    int* values;
    int topIndex;
    int keysSize;
    int valuesSize;

}Dictionary;

我的导师告诉我不要在 .h 文件中实现 typedef,所以我在我的 .c 文件中实现了它,但是当我尝试编译时,我遇到了关于重新定义它的错误。

我试图删除 .h 文件中的定义,但出现错误,因为返回 typedef 的函数现在返回未定义的类型。

我该如何解决?

标签: ctypedef

解决方案


C11 之前的 C 不支持typedef重定义。

如果您包含包含 的标头,如果您想支持那些较旧的 C 实现typedef struct Dictionary Dictionary;,则您的struct Dictionary定义不应重新引入该名称。typedef即,只需struct Dictionary{ /*...*/ };在 C 文件中执行。


推荐阅读