最近,我正在检查我的一些代码,发现了两个我错误地键入!=而不是| =的实例。
我认为GCC可能会针对A!= B的非可执行指令发出警告;
我说这是不可执行的,因为!=不是赋值运算符,而是逻辑运算符。
有没有可以标记这种愚蠢错误的选项?
由于我设置了一些控制flash编程的位,所以我不知道代码如何正常工作-幸运的是我抓住了它。
谢谢
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的文档。