【问题标题】:GCC compiler warning: assignment makes pointer from integer without a cast [duplicate]GCC编译器警告:赋值使指针从整数而不进行强制转换[重复]
【发布时间】:2013-04-15 00:31:37
【问题描述】:

我有一个名为 tempA 的指针,它指向一个结构:

struct SLNode *tempA;

我有一个名为sl_find Node()的函数我这样称呼它:

tempA = sl_findNode(&list, word);

函数sl_findNode() 如下所示:

 struct SLNode* sl_findNode (struct SLNode **list, char *str1) {
      assert (list);
      struct SLNode *curr = *list;
      while (curr) {
        if (strcmp(curr->word, str1) == 0) {
          return curr;
        }
        curr = curr->next;
      }
      return NULL;
    }

最后,list 声明如下:

struct SLNode *list = NULL;

编译器在第 77 行给了我警告:

tempA = sl_findNode(&list, word);

有人知道为什么吗?

Word 是一个字符数组:

char word[30];

我从文本文件中读取字符并循环添加到 word 中

【问题讨论】:

  • 你对word的定义是什么? here 是一个可能的原因。
  • 我已经更新了单词是什么
  • 使用 -Wstrict-prototypes 编译您的程序 - 您没有在调用的任何 .c 文件中使用 sl_findNode() 的原型(或声明)。

标签: c pointers


【解决方案1】:

当函数声明正确时(在您的情况下,它看起来正确),当定义是在第一次使用函数之后并且没有原型时会发生这种警告。

解决这个问题需要在第一次使用之前将函数移动为文本,或者在第一次使用之前添加函数的原型,如下所示:

struct SLNode* sl_findNode (struct SLNode **list, char *str1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多