我是C編程的新手。我必須爲家庭作業編寫一些功能/程序,然後用教授給出的make test來測試它們。c警告 - 從不兼容的指針類型傳入'insert'的參數1
我有一個兩個元素的結構:第一個元素是一個指向列表的指針,第二個元素是列表排序的順序類型。這裏是數據結構:
/* order type
NOTORD = no order
TIME = ordered by increasing time
POSITION = ordered by increasing position */
typedef enum {NOTORD=0, TIME=1, POSITION=2} ord_t;
typedef struct elem {
double position;
double time;
struct elem * next;
} elem_t;
typedef struct {
elem_t * head;
ord_t ord;
} lista_t;
我必須根據順序的類型插入一個元素(由輸入給出)到列表中。這裏是我的代碼:
void inserisciInTesta(lista_t *l, elem_t *el) {
el->next=l->head;
l->head=el;
}
void inserisciTime(lista_t * l, elem_t* pelem) {
if(l->head->time >= pelem->time)
inserisciInTesta(l, pelem);
else
inserisciTime(l->head->next, pelem);
}
void inserisciPosition(lista_t * l, elem_t* pelem) {
if((l->head)->position >= pelem->position)
inserisciInTesta(l, pelem);
else
inserisciPosition(l->head->next, pelem);
}
int inserisci(lista_t * l , elem_t* pelem) {
if(l->ord==TIME) {
inserisciTime(l, pelem);
return 0;
}
else if(l->ord==POSITION){
inserisciPosition(l, pelem);
return 0;
}
else {
inserisciInTesta(l, pelem);
return 0;
}
}
使得測試,我得到這些警告:
raggi.c:在函數 'inserisciTime':
raggi.c:42:27:警告:使從兼容的指針類型 'inserisciTime' 的參數1 [-Wincompatible指針類型]
inserisciTime(l->head->next, pelem); ^
raggi.c:38:6:注:預期「lista_噸* {又名結構*}」,但參數的類型的 '結構ELEM *'
空隙inserisciTime(lista_t * L,elem_t * pelem){ ^
raggi.c:在函數 'inserisciPosition':
raggi.c:49:31:警告:傳遞來自兼容的指針類型 'inserisciPosition' 的參數1 [-Wincompatible指針類型]
inserisciPosition(l->head->next, pelem); ^
raggi.c:45:6:注:期望'lista_t * {aka struct *}',但參數的類型是'str UCT ELEM *」
無效inserisciPosition(lista_t * L,elem_t * pelem){ ^
什麼是錯我的代碼?預先感謝您的幫助。
是不是警告安靜清除:「*'參數1 ...不兼容的指針類型」*「? – alk
也有十幾個題目幾乎相同的問題,這是非常警告的。這是重複的。 – alk