2017-11-16 7 views
-4

ANSII Cの小さなプログラムでコンパイル時に "Conflicting Types"というエラーメッセージが表示されます。そして、私はそれがなぜ、特に私が別の.cファイルで同じ状況を何の問題もなくテストしたという事実を考えれば分かりません。次のように競合するタイプのエラーメッセージ

コードは次のとおりです。

void search(char *v, Message *l){ 

    long int max; 

    max=countNodes(l); 

(...この部分は重要ではありません、私はあなたのことを保証...)

} //end of the "search" function 

    long int countNodes(Message *l){ 

    long int i=0; 

    while(l!=NULL){ 

    i++; 
    l=(l->nseg); 

    } 

    return(i); 
    } 

ので、 "countNodes" 機能"l"(リンクされたリスト)内のノードの数を決定する。次に、その番号が「検索」機能に返されます。しかし、コンパイラは私に "Conflicting Types"というエラーメッセージを表示し続けるのですが、なぜわからないのですか...すべてがうまく書かれていると思います。

すべてのご協力をいただきありがとうございます。前もって感謝します!

+1

これは[mcve]ではありません。お読みください*あなたの質問を編集してください*。また、* exact *エラーメッセージが表示されるはずです。 –

+1

'countNodes()'が呼ばれる前に宣言されたプロトタイプはどこですか?使用または定義の前にプロトタイプがない場合は、現代(C11またはC99)標準ではなく、アンティーク(C90)標準にコーディングする必要があります。 –

+0

[Cの競合するタイプのエラー]の重複の可能性があります(https://stackoverflow.com/questions/1779358/conflicting-types-error-in-c) –

答えて

3

コンパイラは基本的にファイルを1行ずつ読み込みます。したがって、max=countNodes(l);と読むと、まだあなたのcountNodes機能を "知っていません"。

  • は、検索機能の前に、あなたのcountNodes機能を置く:

    2つのオプションがあります。

  • countNode関数のプロトタイプをsearch関数の前に置いてください(それに精通していない場合は、 "prototype in c"を参照してください)。

関連する問題