gpt4 book ai didi

C - 声明时未声明的变量

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:45 25 4
gpt4 key购买 nike

<分区>

我正在用 C 构建哈希表。除了这个变量 cur_item 之外,一切似乎都工作正常,它在编译时向我报告错误。

代码如下:

void insert(hash_table* ht, const char* key, const char* value) {            
const int load = ht->count * 100 / ht->size;
if (load > 70) {
resize_up(ht);
}
item* item = new_item(key, value);
int index = get_hash(item->key, ht->size, 0);
item* cur_item = ht->items[index];
int i = 1;
while (cur_item != NULL) {
/** PROCESS **/
}
}

这是我的 Makefile(我猜不是最好的):

main: main.o hash_table.o prime.o                                            
gcc -g -Wall -lm -o main.out ./build/main.o ./build/hash_table.o ./\
build/prime.o

main.o: ./src/main.c ./src/hash_table.h
gcc -c ./src/main.c -o ./build/main.o

hash_table.o: ./src/hash_table.c ./src/hash_table.h
gcc -c ./src/hash_table.c -o ./build/hash_table.o

prime.o: ./src/prime.c ./src/prime.h
gcc -c ./src/prime.c -o ./build/prime.o

这里是错误:

./src/hash_table.c: In function ‘insert’:
./src/hash_table.c:65:9: error: ‘cur_item’ undeclared (first use in this function); did you mean ‘del_item’?
item* cur_item = ht->items[index];
^~~~~~~~
del_item
./src/hash_table.c:65:9: note: each undeclared identifier is reported only once for each function it appears in
make: *** [Makefile:10: hash_table.o] Error 1

item 类型表示我创建的结构。del_item 是一个函数,没有理由在那里使用它。

如果我在 if 循环之前声明 cur_item,然后在 get_hash() 函数之后初始化它的值,编译工作正常。

有人能解释一下为什么第一次编译失败吗?我的 Makefile 中是否缺少某些内容?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com