неиспользуемое выражение при увеличении указателя - PullRequest
2 голосов
/ 21 апреля 2020

У меня проблема, вот функция:

t_coord     cut_input(char **input){
t_coord     coords;

coords.x = ft_atoi(*input);
while (ft_isspace(**input))
    *input++;
while (!ft_isspace(**input))
    *input++;
coords.y = ft_atoi(*input);
while (ft_isspace(**input))
    *input++;
while (!ft_isspace(**input))
    *input++;
return (coords);}

, и когда я компилирую ее, она говорит: «ошибка: результат выражения не используется [-Werror, -Wunused-value] * input ++;» Я не понимаю, что мне нужно увеличивать этот указатель, потому что я вызываю эту функцию, умноженную на несколько раз, как это

t_coord var1 = cut_input(&input);
t_coord var2 = cut_input(&input);
t_coord var3 = cut_input(&input);
t_coord var4 = cut_input(&input);

, так что я на самом деле использую результат, так или иначе я могу удалить это предупреждение? Я даже пытался поместить (void) ввод в конец функции, не сработало, спасибо за вашу помощь

1 Ответ

2 голосов
/ 21 апреля 2020

https://en.cppreference.com/w/c/language/operator_precedence

*input++ эквивалентно *(input++), а не (*input)++, как вы могли ожидать, потому что постинкремент имеет более высокий приоритет, чем разыменование. Поскольку вы не используете защищенное значение, вы видите неиспользованную ошибку результата.

  • Если вы имеете в виду указатель приращения (элемент get input указывает, например, input указывает на член массива и сделайте input, указывающий на следующий), а затем разыменование используйте *(input++) или *input++.

  • Если вы имеете в виду точки указателя разыменования и приращения значения, которые следует использовать (*input)++.

...