gpt4 book ai didi

c++ - 未使用值警告 : C vs C++ using gcc

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:15:43 27 4
gpt4 key购买 nike

是否有可能使 gccg++ 那样处理 C++ 的未使用值警告?对于像 C 中的 p &&++*p; 这样的指令,有一个警告,但对于 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) 可能会被一个合理的编译器完全优化掉。

关于c++ - 未使用值警告 : C vs C++ using gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38540031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com