Рассмотрим этот кусок кода:
struct Trade
{
float Price;
char* time;
int shares;
struct list_head *tradeList;
};
typedef struct Trade Trade;
void DisplayTrades(Trade* TBook)
{
if(TBook==NULL)
{
printf("NO TRADES\n");
return;
}
struct list_head *pos;
Trade *tmp;
pos = TBook->tradeList;
__list_for_each(pos,TBook->tradeList)
{
tmp = list_entry((pos),Trade,tradeList);
printf("Price %f, Time %s, Shares %d\n",tmp->Price,tmp->time,tmp->shares);
}
}
В этом коде, когда я компилирую, компилятор gcc возвращает предупреждение, что initialization from incompatible pointer type
в строке, где вызывается list_entry.
Я использовал list_entry в других местах того же кода, и он работает без сбоев. Таким образом, единственное, что поразило меня, это, возможно, то, что я передал в функцию непреднамеренные типы переменных и, следовательно, приложил определение структуры Trade. Проблема сохраняется даже тогда.
Был бы признателен, если бы знал, где что-то идет не так.
РЕДАКТИРОВАТЬ : Это всего лишь небольшой фрагмент из большого кода. Я прошу прощения за то, что я выгляжу так, что пытаюсь использовать объект Trade *, когда его нет В коде я действительно использовал typedef для определения struct Trade;