2017-01-15 5 views
0

こんにちはみんな、私は少し問題を抱えているので、いくつかの助けを探すために私がここにいる期待される「構造体CELLULEは**」が、引数は型「構造体CELLULE」私はあなたのすべてが罰金願ってい

、です私は私のプログラムをコンパイルしようとしていますが、この行のmain関数にエラーがあります。d = DEPILER(* p);

エラーが

main.c:12:19: error: incompatible type for argument 1 of ‘DEPILER’ 
     p = DEPILER(*p); 
      ^
In file included from Indexation.h:4:0, 
      from base.h:1, 
      from main.c:3: 
PileID.h:18:9: note: expected ‘struct CELLULE **’ but argument is of type ‘struct CELLULE’ 
Pile_ID DEPILER (Pile_ID *p); 
    ^
main.c:14:21: error: incompatible type for argument 1 of ‘DEPILER’ 
    }while(DEPILER(*p) != NULL); 
       ^
In file included from Indexation.h:4:0, 
      from base.h:1, 
      from main.c:3: 
PileID.h:18:9: note: expected ‘struct CELLULE **’ but argument is of type ‘struct CELLULE’ 
Pile_ID DEPILER (Pile_ID *p); 
    ^
Makefile:12 : la recette pour la cible « main.o » a échouée 
make: *** [main.o] Erreur 1 

は、私は私のプログラムが動作しない理由を見つけるために多くのことを検索しますが、私は知らない。なぜなら

D = DEPILER(* P)の引数;

Pile_ID

タイプ

* P

あるとDEPILERの私のプロトタイプは

です

identifiant DEPILER(Pile_ID * p);私は願って私の英語のため申し訳ありません:

なぜ彼は

構造体CELLULE **

//私のメイン

#include <stdio.h> 
#include <stdlib.h> 
#include "base.h" 

int main(){ 

    Pile_ID p; 
    identifiant d; 

    p = Indexation("/home/mallent/FICHIER_PROJET/Textes"); 
    do{ 
     d = DEPILER(*p); 
     //Copie(*d); 
    }while(DEPILER(*p) != NULL); 
} 


// function depiler in file PileID.c 

identifiant DEPILER (Pile_ID *p){ 
    assert(PILE_EST_VIDE); 
    identifiant x; 
    Pile_ID paux; 
    paux=(*p)->suiv; 
    x.d=(*p)->ID.d; 
    x.titre=(*p)->ID.titre; 
    free (*p); 
    (*p)=paux; 
    return x; 
} 


// function depiler in file PileID.h 
#include "descripteur.h" 
typedef struct etIdentifiant{ 
    descrip d; 
    const char *titre; 
}identifiant; 

typedef struct CELLULE{ 
    identifiant ID; 
    struct CELLULE *suiv; 
}Cel; 

typedef struct CELLULE * Pile_ID; 

PS型の引数をしたいです私を助けようとするすべての人に感謝します(^_^)

+0

'DEPILER(* p);' - > 'DEPILER(&p);' – BLUEPIXY

答えて

1

d = DEPILER(*p);の代わりにd = DEPILER(&p);を試してください。

+0

私はDEPILERにアドレスを与える必要があることを忘れてしまった^^ –

関連する問題