gccは、Cのための未使用の値の警告を処理しますのようにg ++はC++を処理しますか? Cのp && ++*p;
のような命令については、警告がありますが、C++の警告はありません。 -wno-unused-value
の設定は実際の解決策ではありません。これは、以下の2行目のような有用な警告も削除されるためです。例:あなたが手動で無効にするためにそれらをキャストして、それらを削除することができgccを使ったC対C++
$ (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; }
^
* gcc *と* g ++ *は基本的にコンパイル時の警告と同じコンパイラですが、違いはC/C++です。私はこれを反映するために質問を編集しました。あなたが私が遠すぎると感じたら編集をロールバックしてください。 – hyde
@EdHeal問題を示すために、問題のコードはMVCEである可能性が最も高いです。 – hyde
@ marton-l-toth私はテストで何か間違っていると思う。私は私が*テストしたことを理解するまで私のコメントを削除しました... – hvd