GCC for ARM是否可以将其标记为警告:A!= B;

最近,我正在检查我的一些代码,发现了两个我错误地键入!=而不是| =的实例。

我认为GCC可能会针对A!= B的非可执行指令发出警告;

我说这是不可执行的,因为!=不是赋值运算符,而是逻辑运算符。

有没有可以标记这种愚蠢错误的选项?

由于我设置了一些控制flash编程的位,所以我不知道代码如何正常工作-幸运的是我抓住了它。

谢谢

zczhouzhiwei 回答:GCC for ARM是否可以将其标记为警告:A!= B;

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 option的文档。

本文链接:https://www.f2er.com/3164312.html

大家都在问