“int”中的“Bool *”使指针来自整数而不强制转换?

"Bool *" from "int" makes pointer from integer without cast?

提问人:davdavdav2 提问时间:9/20/2021 最后编辑:davdavdav2 更新时间:9/20/2021 访问量:345

问:

我在编译以下代码时不断收到此警告,说“从'int'赋值到'_Bool'使指针从整数中转换而没有强制转换”,我不知道这意味着什么。我该如何解决这个问题?它通过了我所有的测试。*result = true;

错误消息

char *hash_table_lookup(hash_table_t *ht, int key, bool **result)
{
  /// Find the previous entry for key
  entry_t *tmp = find_previous_entry_for_key(&ht->buckets[key % No_Buckets], key);
  entry_t *next = tmp->next;

  if (next && next->value)
  {
    *result = true;
    return (next->value);
  }
  else  
  {
    *result = false;
  }
}

它按以下方式进行测试

void test_lookup1()
{
   hash_table_t *ht = hash_table_create();
   char *valtest = "a";
   int keytest = 12;
   hash_table_insert(ht, keytest, valtest);
   bool *result;
   hash_table_lookup(ht, keytest, &result);
   CU_ASSERT_TRUE(result);
   hash_table_destroy(ht);
}
C 指针 布尔 警告 哈希表

评论

2赞 Adrian Mole 9/20/2021
你的参数是一个双指针(),所以指针()也是一个。您正在尝试将 or(如果您使用的是标头,则为 C 中的两种整型类型)分配给该指针。对于正式/更完整的答案(包括修复),我们需要看到更多的代码,比如你对参数做了什么,以及你作为该参数传递了什么。resultbool **result*resultbool*falsetrue<stdbool.h>result
1赞 Chris 9/20/2021
result是指向指针的指针。当您取消引用它时,您仍然会得到一个指向 的指针,您正在为该指针分配一个整数。为什么 hneed 要有类型?*resultboolresultbool **
3赞 Adrian Mole 9/20/2021
目前,我的“最佳猜测”是两者是错别字......但这只是一个猜测。**
0赞 Adrian Mole 9/20/2021
为什么该变量需要成为指针?您肯定希望直接返回值作为通过/失败信号,然后将 a 传递给函数?resultboolbool* result
1赞 Gerhardh 9/20/2021
请不要发布文字图片。而是直接将您的文本(代码、输入和输出)复制并粘贴到问题中。

答: 暂无答案