0

私は学校でグループ プロジェクト (3D FPS ゲーム) を行っており、C++ で OpenAL と OGG Vorbis を使用してオーディオをプログラミングしています。私たちのコンパイラは、定義されているが使用されていない変数について警告するように設定されています。これは、Vorbis の問題であることが判明しました。アプリケーションをコンパイルすると、次のようになります。

[  8%] Building CXX object CMakeFiles/fps.dir/src/audio/Sound.cpp.o
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:82:21: warning: ‘OV_CALLBACKS_NOCLOSE’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:89:21: warning: ‘OV_CALLBACKS_STREAMONLY’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:96:21: warning: ‘OV_CALLBACKS_STREAMONLY_NOCLOSE’ defined but not used [-Wunused-variable]
[  9%] Building CXX object CMakeFiles/fps.dir/src/audio/MenuAudioController.cpp.o
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:75:21: warning: ‘OV_CALLBACKS_DEFAULT’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:82:21: warning: ‘OV_CALLBACKS_NOCLOSE’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:89:21: warning: ‘OV_CALLBACKS_STREAMONLY’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:96:21: warning: ‘OV_CALLBACKS_STREAMONLY_NOCLOSE’ defined but not used [-Wunused-variable]
[ 10%] Building CXX object CMakeFiles/fps.dir/src/audio/GameAudioController.cpp.o
In file included from /home/berzeger/FPS/FPS/trunk/game/src/audio/GameAudioController.cpp:1:0:
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:75:21: warning: ‘OV_CALLBACKS_DEFAULT’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:82:21: warning: ‘OV_CALLBACKS_NOCLOSE’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:89:21: warning: ‘OV_CALLBACKS_STREAMONLY’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:96:21: warning: ‘OV_CALLBACKS_STREAMONLY_NOCLOSE’ defined but not used [-Wunused-variable]
[ 11%] Building CXX object CMakeFiles/fps.dir/src/audio/AudioController.cpp.o
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:75:21: warning: ‘OV_CALLBACKS_DEFAULT’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:82:21: warning: ‘OV_CALLBACKS_NOCLOSE’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:89:21: warning: ‘OV_CALLBACKS_STREAMONLY’ defined but not used [-Wunused-variable]
/home/berzeger/FPS/FPS/trunk/game/src/audio/../../include/vorbis/vorbisfile.h:96:21: warning: ‘OV_CALLBACKS_STREAMONLY_NOCLOSE’ defined but not used [-Wunused-variable]

等々。これは、重要なものが簡単に失われる混乱であることがわかります。

vorbis の未使用の変数を抑制する方法を見つけることができないようです。私は試した

#define OV_EXCLUDE_STATIC_CALLBACKS

しかし、それはすべての vorbis 定義を無効にします。これは私が望むものではありません。

誰か助けてくれませんか?前もって感謝します!

4

2 に答える 2

2

個人的には、これらの特定の警告を除外するようにビルド スクリプトを変更しますが、それが苦手な場合は...

ラッパー ヘッダー ファイルを作成し、vorbis ヘッダーではなくラッパー ファイルをインクルードし、ラッパー ヘッダーで問題の変数を使用して、警告が表示されないようにすることができます。それらが整数定数であると仮定すると、このようなもので十分です。

//File: myvorbisfile.h
#include "vorbisfile.h"

// Dummy function in the anonymous namespace 
// to suppress the unused variables
namespace
{
   int hide_unused_variables()
   {
     return 0
      + OV_CALLBACKS_NOCLOSE
      + OV_CALLBACKS_DEFAULT
      ... Fill in the rest ...
    }
}
于 2012-09-21T07:57:15.267 に答える
1

OK、私は今解決策を得たと思います。app ディレクトリにヘッダー ファイルをコピーしたので、vorbisfile.h を次のようにインクルードしました。

#include "../../include/vorbis/vorbisfile.h"

この行を次のように変更したとき:

#include <vorbis/vorbisfile.h>

警告は消えました。理由はわかりません。

于 2012-09-21T08:13:25.370 に答える