mysql_row возвращает присваивание из несовместимого типа указателя? в С

0

люди,

см. следующий код:

 gboolean auto_refresh_host_list(bahan *unit)
    {
//assuming unit->setting->handle_conn has initiated and connected
mysql_query(unit->setting->handle_conn,"select * from host");
unit->setting->handle_result = mysql_store_result(unit->setting->handle_conn);

guint num_fields = mysql_num_fields(unit->setting->handle_result);

line:148 while((unit->setting->handle_row = mysql_fetch_row(unit->setting->handle_result)))
{
    guint i;
    for(i=0; i<= num_fields; i++)
    {
    line:153    printf("%s", (unit->setting->handle_row[i] ? unit->setting->handle_row[i] : "NULL" ));
    }
    printf("\n");
}
mysql_free_result(unit->setting->handle_result);
line:158}

но как только я его компилирую, вы увидите предупреждение:

main.c:148: warning: assignment from incompatible pointer type
main.c:153: warning: pointer type mismatch in conditional expression
main.c:153: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘void * const’
main.c:158: warning: control reaches end of non-void function

в любом случае структура предположительно будет выглядеть следующим образом:

MYSQL *handle_conn;
MYSQL_RES *handle_result;
MYSQL_ROW *handle_row;
MYSQL_FIELD *handle_field;

im немного запутался после того, как прочитал http://zetcode.com/tutorials/mysqlcapitutorial/, ну, у кого есть идеи?

Теги:

1 ответ

2
Лучший ответ

mysql_fetch_row() возвращает a MYSQL_ROW, а не MYSQL_ROW *.

  • 0
    мои извинения ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню