116

未使用の変数の警告をオフにするためにgccコンパイラに渡すスイッチを知りたいですか?Windowsのブーストでエラーが発生し、ブーストコードに触れたくありません。

C:\boost_1_52_0/boost/system/error_code.hpp: At global scope:
C:\boost_1_52_0/boost/system/error_code.hpp:214:36: error: 'boost::system::posix_category' defined but not used [-Werror=unused-variable]
C:\boost_1_52_0/boost/system/error_code.hpp:215:36: error: 'boost::system::errno_ecat' defined but not used [-Werror=unused-variable]
C:\boost_1_52_0/boost/system/error_code.hpp:216:36: error: 'boost::system::native_ecat' defined but not used [-Werror=unused-variable]

両方を使用してみまし-Wunused-value-Wno-unused-valueが、どちらも上記のメッセージを抑制しませんでした。

正しいコマンドは何ですか、これが私のコンパイル行です:

g++  -g -fno-inline -Wall -Werror -Wextra -Wfloat-equal -Wshadow
-Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wno-conversion 
-Wdisabled-optimization -Wredundant-decls -Wunused-value -Wno-deprecated 
-IC:\\boost_1_52_0 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 
-c -o op.o op.cpp

おそらく、-Wallオーバーライドは私の目標を上書きしますか?

4

10 に答える 10

272

スイッチは通常その-Wno-unused-variableトリックを行います。ただし、プロジェクトでこれらのことを気にする場合、これは実際に非常に役立つ警告です。ただし、GCC がコードにないことについて警告し始めると、面倒になります。

警告をオンにしておくことをお勧めしますが、-isystem代わりに-Iサードパーティ プロジェクトのインクルード ディレクトリを使用してください。このフラグは、制御できないものについて警告しないように GCC に指示します。

たとえば、 の代わりに-IC:\\boost_1_52_0と言い-isystem C:\\boost_1_52_0ます。

それが役に立てば幸い。幸運を!

于 2013-02-24T16:31:09.677 に答える
18

man gcc警告オプションを参照してください。そこにはたくさんのunused

警告オプション
... -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable

それらのいずれかの前に を付けるとno-、この警告が無効になります。

多くのオプションには、-f または -W--- で始まる長い名前が付いています。たとえば、-fmove-loop-invariants、-Wformat などです。これらのほとんどには、正と負の両方の形式があります。-ffoo の否定形は -fno-foo になります。このマニュアルでは、これら 2 つの形式のうち、デフォルトでない方の 1 つだけを説明します。

より詳細な説明は、警告を要求または抑制するオプションにあります。

于 2013-02-24T16:30:38.497 に答える
13

使用は機能する-Wno-unused-variableはずです。

于 2013-02-24T16:26:32.083 に答える
3

コンパイラはすでにあなたに言っています、それはそうではありませvaluevariable。あなたが探している-Wno-unused-variable。また、g++ --help=warnings利用可能なオプションのリストを確認してみてください。

于 2013-02-24T16:28:13.753 に答える
3

gcc から出てくる未使用の変数の警告を無効にするにはどうすればよいですか?
Windows でブーストからエラーが発生し、ブースト コードに触れたくありません...

Boost の Tracにアクセスし、Boost に対してバグ レポートを提出します。

アプリケーションは、ライブラリの警告とエラーをクリアする責任を負いません。ライブラリは、独自の警告とエラーをクリアする責任があります。

于 2015-07-26T19:52:00.120 に答える
0

変数の前に「(void)」を付けることができます。これは、ビルド フレームワークにアクセスできない場合や、動作のローカルな変更のみに影響を与えたい場合に役立ちます。

いいえ:

int main()
{
  int unused1;       //This will print warning
  int unused2;       //This will not print warning -
                     //                             |
  (void) unused2;    // <----------------------------
}

出力:

$ g++ -Wall test.cc
test.cc: In function ‘int main()’:
test.cc:4:7: warning: unused variable ‘unused1’ [-Wunused-variable]
    4 |   int unused1;
      |       ^~~~~~~
于 2021-12-14T13:32:19.333 に答える