1. ホーム
  2. c++

[解決済み】未使用の変数に関する警告を表示させないようにするには?

2022-03-31 15:33:26

質問

クロスプラットフォームのアプリケーションを使用していますが、いくつかの関数で、関数に渡された値がすべて利用されていません。 そのため、GCCから、未使用の変数があるという警告を受けました。

この警告を回避するにはどのようなコーディングが良いでしょうか?

関数を#ifdefで囲む?

#ifdef _MSC_VER
void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal qrLeft, qreal qrTop, qreal qrWidth, qreal qrHeight)
#else
void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal /*qrLeft*/, qreal /*qrTop*/, qreal /*qrWidth*/, qreal /*qrHeight*/)
#endif
{

これはとても醜いですが、コンパイラが好む方法のように思えます。

それとも、関数の最後で変数にゼロを代入すればいいのでしょうか?(これはコンパイラの警告を消すためにプログラムの流れを変えることになるので嫌なのですが)。

正しい方法はあるのでしょうか?

どのように解決するのですか?

あなたは の中に入れてください。 (void)var; (何もしない)ため、コンパイラはそれが使用されていることを認識します。これはコンパイラ間で移植可能である。

void foo(int param1, int param2)
{
    (void)param2;
    bar(param1);
}

または

#define UNUSED(expr) do { (void)(expr); } while (0)
...

void foo(int param1, int param2)
{
    UNUSED(param2);
    bar(param1);
}