Может ли GCC для ARM пометить это как предупреждение: A! = B; - PullRequest
1 голос
/ 04 ноября 2019

Недавно я делал обзор своего кода и обнаружил два случая, когда я ошибочно набрал! = Вместо | =.

Я считал, что GCC может выдать предупреждение длянеисполняемая инструкция как A! = B;

Я говорю неисполнимая, потому что! = не оператор присваивания, а логический оператор.

Есть ли опция, которая может пометить этот типглупая ошибка?

Я не знаю, как код работал правильно, так как я устанавливал некоторые биты, которые контролировали программирование флэш-памяти - к счастью, я понял это.

Спасибо

1 Ответ

0 голосов
/ 04 ноября 2019

GCC 8 предупреждает меня:

void
f1 (int *a, int b)
{
  *a != b;
}

void
f2 (int *pa, int b)
{
  int a = *pa;
  a != b;
  *pa = a;
}

int f3 (void);

void
f4 (int *pa)
{
  int a = *pa;
  a != f3 ();
  *pa = a;
}

Результат:

t.c: In function ‘f1’:
t.c:4:6: warning: statement with no effect [-Wunused-value]
   *a != b;
   ~~~^~~~
t.c: In function ‘f2’:
t.c:11:5: warning: statement with no effect [-Wunused-value]
   a != b;
   ~~^~~~
t.c: In function ‘f4’:
t.c:21:5: warning: value computed is not used [-Wunused-value]
   a != f3 ();
   ~~^~~~~~~~

f4 получает другое предупреждение, потому что вызов f3 является побочным эффектом.

См. Документацию опции -Wunused-value .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...