0

いくつかのコードを取得し、コンパイルのバグを修正しようとしています:

StkFrames& PRCRev :: tick( StkFrames& frames, unsigned int channel )
{
#if defined(_STK_DEBUG_)
  if ( channel >= frames.channels() - 1 ) {
    errorString_ << "PRCRev::tick(): channel and StkFrames arguments are incompatible!";
    handleError( StkError::FUNCTION_ARGUMENT );
  }
#endif

  StkFloat *samples = &frames[channel];
  unsigned int hop = frames.channels();
  for ( unsigned int i=0; i<frames.frames(); i++, samples += hop ) {
    *samples = tick( *samples );

    *samples++; <<<<<<<<<--------- Expression result unused.

    *samples = lastFrame_[1];
  }

  return frames;
}

コードが何をしようとしているのか理解できません。コードは巨大で、かなりの数を修正しました。しかし、グーグルはこれにはうまくいきませんでした。

何か案は?

4

1 に答える 1

0

まず、インクリメントを行います (実際に警告を表示する行)。

*samples++;

そして、その変数に何か他のものを割り当てます。これにより、前のアクションが使用されなくなります。

*samples = lastFrame_[1];

「for」ループ内のこのコードをより注意深く読むことをお勧めします。とても論理的ではないようです。

于 2012-11-26T13:32:17.280 に答える