Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-声明时未声明的变量_C - Fatal编程技术网

C-声明时未声明的变量

C-声明时未声明的变量,c,C,我正在用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) {

我正在用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(我想不是最好的):

下面是错误:

./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
类型
表示我创建的结构。
delu item
是一个函数,没有理由在那里使用它

如果我在
If
循环之前声明
cur\u项
,然后在
get\u hash()
函数之后初始化其值,编译工作正常


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

您刚刚将标识符
重载为变量。因此,当您试图声明
cur\u item
时,编译器会感到困惑,不知道您想要什么


不要对变量和类型使用相同的名称。显然,这会使您和编译器混淆。

您只是将标识符
重载为变量。因此,当您试图声明
cur\u item
时,编译器会感到困惑,不知道您想要什么


不要对变量和类型使用相同的名称。显然,这让您和编译器感到困惑。

item*item
没有让编译器不高兴,那么为什么
item*cur\u item
?也许你们并没有向我们展示我们所需要的一切……而且,变量应该在任何execute语句之前在顶部初始化。即使你是在最新的C标准,这应该考虑到其他代码是丑陋的和嘈杂的。justSayinI我愿意给你更多的信息,但我找不到相关的信息来帮助你。我在源代码中声明了另一个
item
变量,这个变量是唯一尝试使用-std选项编译的变量=gnu99@tilz0R有些编码风格希望这样,而另一些则不希望这样。我认为在第一次使用时引入变量是一种好的风格。不要对新来者强加中世纪的要求。
item*item
没有让编译器不高兴,那么为什么
item*cur\u item
?也许你们并没有向我们展示我们所需要的一切……而且,变量应该在任何execute语句之前在顶部初始化。即使你是在最新的C标准,这应该考虑到其他代码是丑陋的和嘈杂的。justSayinI我愿意给你更多的信息,但我找不到相关的信息来帮助你。我在源代码中声明了另一个
item
变量,这个变量是唯一尝试使用-std选项编译的变量=gnu99@tilz0R有些编码风格希望这样,而另一些则不希望这样。我认为在第一次使用时引入变量是一种好的风格。不要把中世纪的要求强加给新来的人。很抱歉回答晚了,但我不能早点测试。你是对的,这解决了我的问题。把我的变量命名为与结构类型完全相同的变量是不明智的。谢谢很抱歉回答晚了,但我不能早点测试。你是对的,这解决了我的问题。把我的变量命名为与结构类型完全相同的变量是不明智的。谢谢
./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