使用されていない変数の警告の消音
コンパイラが警告を出力するように設定されている場合、このようなログが表示されることがあるでしょう。
warning: unused parameter 'myVariable' [-Wunused-parameter]
これは、コードをクリーンに保ち、デッド変数を避けるように開発者に伝える安全警告です。この種の警告を最小限に抑えようとするのは良い習慣です。しかし、時には選択肢がないこともあります。既存の関数をオーバーライドしてしまい、すべてのパラメータを使用しない場合です。一方ではアプリケーション全体の警告を消すことができますが、他方ではコンパイル出力に安全警告が山積みになってしまうこともあります。もっと良い選択肢があるはずです。
確かに、自分の機能のためだけに警告を消すことができます。これには2つの方法があります。
- C/C++の構文を使う
- Qtマクロを使う
myFunction(QString name, QString myVariable)をオーバーライドして、myVariableを使わないとします。C/C++ の構文を使えば、myFunction() を次のように実装すればいいだけです。
void myFunction(QString name, QString /*myVariable*/)
関数のシグネチャで変数の名前であるmyVariableをコメントすることで、その変数を関数本体で使用しない(できない)ことを保証します。コンパイラもこのように解釈し、警告を出力しません。
Qt は Q_UNUSED マクロを使って未使用の変数をマークする方法も提供しています。実際に見てみましょう。
void myFunction(QString name, QString myVariable)
{
Q_UNUSED(myVariable)
...
}
myVariableをQ_UNUSEDに渡すだけで、コンパイラの出力から警告を取り除くことができます。カーテンの裏では、Q_UNUSEDは変数に何か魔法のようなことをしていません。
#define Q_UNUSED(x) (void)x;
これはコンパイラを騙すための簡単なトリックです。コンパイラはmyVariableが “used “と表示されますが、それに対しては何もしません。