Что такое invalid comparison (gcc ругается)

Тема в разделе "WASM.HEAP", создана пользователем osrootd, 24 сен 2008.

  1. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Код (Text):
    1. int process_user_command(char *cmd)
    2. {
    3.  
    4. int i = -1;
    5.  
    6.     for (i=0; i<command_set[i] != NULL; i++)
    7.     {
    8.         if (command_set[i] == cmd)
    9.             break;
    10.     }
    11. return i;
    12. }
    gcc : /root/projects/blackoffice/drivers/blackpop/blackpop-driver.c:39: comparisons like X<=Y<=Z do not have their mathematical meaning

    Это почему?
     
  2. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    дык...
    ожидается выражение, приводимое к булевому типу. а у вас здесь попытка после получения булева выражения сравнить его с NULL. каков в этом математический смысл?

    ps: если это Си, а не С++, то у меня сомнения по поводу валидности сравнения char* через операцию ==. так будут сравниваться сами указатели.
    может имеется ввиду strcmp/strcmpi ?
     
  3. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Код вообще левый какой-то. Объясни, чего хочешь?
     
  4. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Телепатор нашёптывает, что должно быть либо так:
    Код (Text):
    1. for (i=0; i<command_set[i]; i++)
    либо так (что вероятнее всего):
    Код (Text):
    1. for (i=0; command_set[i] = NULL; i++)
     
  5. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Чето крыша съехала... Языки путать начал.
    Исправил код.
    strcnmp, чтож еще:)
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    DEEP
    что вероятнее всего ... for (i=0; command_set = NULL; i++)
    Пропустил восклицательный знак.