アプリケーションで非常に奇妙なことに気付きました。World クラスには 2 つの static const 整数があります。
class World
{
public:
static const int CHUNK_SIZE_X = 32;
private:
static const int SHIFT_X;
};
定数SHIFT_Xは、対応する *.cpp ファイルで初期化されます。
const int World::SHIFT_X = Ogre::Math::Log2(World::CHUNK_SIZE_X);
ここで奇妙なことに、SHIFT_Xの値が 5 ではなく 4 になっています。任意のメソッド内からOgre::Math::Log2(32)を呼び出すと、 5 が正しく計算されます。
ここで一体何が起こっているのですか?また、これは Windows 7 (Visual Studio Express 10 を使用) でのみ発生することも言う必要があります。私のアプリケーションは GNU/Linux (Debian Squeeze) でも動作し、すべて正常に動作します。