【发布时间】:2020-10-12 10:04:06
【问题描述】:
我正在尝试使用哈希表创建字典,因此我创建了一个名为 node 的结构,它有一个 word 和一个与之关联的 next 指针:
// Represents a node in a hash table
typedef struct node
{
char word[LENGTH + 1];
struct node *next;
}
node;
// Hash table
struct node *table[5];
在main 中,我初始化了一个node,现在正尝试将其加载到哈希表中:
void hash_insert_node(struct node **hash_table, struct node *n, int value)
{
hash_table[value] = n;
printf("%s\n", hash_table[value]->word);
}
我在一个名为dictionaries.h 的文件中有这个函数的原型,这个代码在一个名为dictionaries.c 的文件中。在dictionaries.c的顶部,我有
#include "dictionaries.h"
如果我现在运行代码,我会收到以下错误:
declaration of 'struct node' will not be visible outside of this function [-Werror,-Wvisibility]
我发现解决此问题的唯一方法是将结构的定义移至dictionaries.h,但这似乎很愚蠢。
这可能是一个微不足道的问题,但我非常感谢任何帮助。
【问题讨论】:
-
你可以只添加“struct node;”在“dictionnary.h”中声明 hash_insert_node() 之前告诉编译器它是一个前向声明。参看。 en.cppreference.com/w/c/language/struct
-
dictionaries.h中的具体内容。main中有什么内容?发布minimal reproducible example。不要描述您的代码,而是显示它。
标签: c struct hashtable header-files