2

値が既に内部にある場合、それぞれ整数を保持するリンクされた要素のリストを確認したい。

struct ListenElement{
    int wert;
    struct ListenElement *nachfolger;
};

struct ListenAnfang{
    struct ListenElement *anfang;
};

struct ListenAnfang LA;

bool ckeckForInt(int value){
    if (LA.anfang == NULL){
        return 0;
    }
    return checkCurrent(LA.anfang, value);
}

bool checkCurrent(struct ListenElement* check, int value){
    if (check->wert == value){
        return true;
    }
    else if (check->nachfolger != NULL){
        return checkCurrent(check->nachfolger, value);
    }
    else{
        return false;
    }   
}

checkCurrent メソッドの競合する型を取得していますが、見つかりません。

4

2 に答える 2

4

関数宣言がありません。C では、関数をそのまま宣言する必要があります。

struct ListenElement{
    int wert;
    struct ListenElement *nachfolger;
};

struct ListenAnfang{
    struct ListenElement *anfang;
};

struct ListenAnfang LA;

//The function declaration !
bool checkCurrent(struct ListenElement* check, int value);

bool ckeckForInt(int value){
    if (LA.anfang == NULL){
        return 0;
    }
    return checkCurrent(LA.anfang, value);
}

bool checkCurrent(struct ListenElement* check, int value){
    if (check->wert == value){
        return true;
    }
    else if (check->nachfolger != NULL){
        return checkCurrent(check->nachfolger, value);
    }
    else{
        return false;
    }   
}
于 2013-04-30T13:02:45.350 に答える
4

checkCurrent()が宣言または定義される前に使用され、その結果、戻り値の型が の暗黙的な関数宣言が生成されますint(これは、戻り値の型が である関数の定義とは異なりますbool)。checkCurrent()最初に使用する前に宣言を追加します。

bool checkCurrent(struct ListenElement* check, int value);

bool ckeckForInt(int value){
    if (LA.anfang == NULL){
        return false; /* Changed '0' to 'false'. */
    }
    return checkCurrent(LA.anfang, value);
}

またはその定義を の前に移動しますcheckForInt()

于 2013-04-30T13:01:39.137 に答える