加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

未使用的值警告:C vs C使用gcc

发布时间:2020-12-16 07:17:05 所属栏目:百科 来源:网络整理
导读:是否有可能使 gcc处理C的未使用值警告,就像g为C处理它们?有关p amp; * P;在C中,有一个警告,但不是C.设置-wno-unused-value并不是一个真正的解决方案,因为它也会删除有用的警告(如下面第2行所示).例: $(gcc –version | head -1; ls -l qwe.*; cat qwe.x; e
是否有可能使 gcc处理C的未使用值警告,就像g为C处理它们?有关p&& amp; * P;在C中,有一个警告,但不是C.设置-wno-unused-value并不是一个真正的解决方案,因为它也会删除有用的警告(如下面第2行所示).例:

$(gcc –version | head -1; ls -l qwe.*; cat qwe.x; echo $sep; gcc -c -O2 -Wall qwe.c; echo $sep; g -c -O2 -Wall qwe .cc)2>& 1 | sed’s / ^ / /’

gcc (Debian 4.9.2-10) 4.9.2
lrwxrwxrwx 1 tml tml    5 Jul 23 10:12 qwe.c -> qwe.x
lrwxrwxrwx 1 tml tml    5 Jul 23 10:12 qwe.cc -> qwe.x
-rw-r--r-- 1 tml tml 1384 Jul 23 10:49 qwe.o
-rw-r--r-- 1 tml tml   55 Jul 23 10:49 qwe.x
void g(int *p) { p && ++*p; }
void f(int *p) { *p+5; }
-------------------------------------------
qwe.c: In function ‘g’:
qwe.c:1:20: warning: value computed is not used [-Wunused-value]
 void g(int *p) { p && ++*p; }
                    ^
qwe.c: In function ‘f’:
qwe.c:2:18: warning: statement with no effect [-Wunused-value]
 void f(int *p) { *p+5; }
                  ^
-------------------------------------------
qwe.cc: In function ‘void f(int*)’:
qwe.cc:2:20: warning: statement has no effect [-Wunused-value]
 void f(int *p) { *p+5; }
                    ^

解决方法

您可以通过将它们转换为void来手动删除它们.

void f(int *p) { (void)*p+5; }

但这些警告是有原因的.这些实际上并没有做任何事情.这里没有任何副作用发生.因此调用此函数的结果与不调用函数的结果相同.

调用函数f(& x)可能会被合理的编译器完全优化掉.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读