1

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 配列です:

char word[30];

テキスト ファイルから文字を読み取り、ループ内の単語に追加します

4

1 に答える 1

3

関数宣言が正しい場合 (そして、あなたの場合は正しいように見えます)、定義が関数の最初の使用の後であり、プロトタイプがない場合、この種の警告が発生します。

この問題を解決するには、最初に使用する前に関数をテキストに移動するか、次のように関数のプロトタイプを最初の使用の上に追加する必要があります。

struct SLNode* sl_findNode (struct SLNode **list, char *str1);
于 2013-04-15T00:36:05.193 に答える