質問: getVal(); } ``` 上記コードを含めたソースをコンパイルすると以下の警告が出ます (確認環境: C++ Buiilder XE4)。 > > valに代入した値は使われていない > > > この警告自体は未使用の変数がわかって便利なのですが、上記のようなテスト関数でも警告が出てしまいます。 こういう場合、どのようにして警告を表示しないようにできるでしょうか(警告をOFFにしない方法で)。 よろしくお願いいたします。
回答: 以下のような、使用しない変数を引数にしたダミー関数を呼び出す方法はいかがでしょうか。 Cの場合: ``` // 共通ヘッダあたりに定義 static inline void unused_impl(int dummy, ...) {} #define UNUSED(...) unused_impl(0, __VA_ARGS__) (中略) // 関数内 int val1 = f(); int val2 = g(); UNUSED(val1, val2) ``` C++の場合: ``` // 共通ヘッダあたりに定義 template void unused(const TS &...) {} (中略) // 関数内 int val1 = f(); int val2 = g(); unused(val1, val2); ``` 長所: * マクロ/関数名を適切なものにすることで、「使用しない」という意思が伝わりやすくなる。 * 複数の変数を同時に指定できる。 短所: * それぞれC99、C++11以降に対応している必要がある。(C++ Builder XE4 は対応してましたっけ? 新しめのは対応しているようですが) * 最適化をかけないと、ダミー関数呼び出しのオーバーヘッドがかかる。