web-dev-qa-db-ja.com

エラー:このステートメントは[-Werror = implicit-fallthrough =]に該当する可能性があります

私はubuntuでmitkをコンパイルしようとしていますが、このエラーが発生しました:

エラー:このステートメントは失敗する可能性があります[-Werror = implicit-fallthrough =]

ここにコードの一部があります:

      /** Get memory offset for a given image index */
      unsigned int GetOffset(const IndexType & idx) const
      {
       const unsigned int * imageDims = m_ImageDataItem->m_Dimensions;

        unsigned int offset = 0;
        switch(VDimension)
        {
        case 4:
         offset = offset + idx[3]*imageDims[0]*imageDims[1]*imageDims[2];
        case 3:
        offset = offset + idx[2]*imageDims[0]*imageDims[1];
        case 2:
        offset  = offset + idx[0] + idx[1]*imageDims[0];
         break;
        }

        return offset;
      }

どんな助けでもお願いします。

3
agasim

キーワードブレークを各caseステートメントに追加する必要があります。追加しない場合、コードは条件に一致するケースから実行され、引き続き満たされます。

ブレーク;

例:VDimension = 4の場合、コードはケース4から実行されます=>ケース3に進みます=>ケース2に続き、中断します。それは以下のコマンドを実行することを意味します:

offset = offset + idx[3]*imageDims[0]*imageDims[1]*imageDims[2];
offset = offset + idx[2]*imageDims[0]*imageDims[1];
offset  = offset + idx[0] + idx[1]*imageDims[0];
break;
return offset;

あなたのコードは次のようになるはずです:

/** Get memory offset for a given image index */
  unsigned int GetOffset(const IndexType & idx) const
  {
   const unsigned int * imageDims = m_ImageDataItem->m_Dimensions;

    unsigned int offset = 0;
    switch(VDimension)
    {
    case 4:
     offset = offset + idx[3]*imageDims[0]*imageDims[1]*imageDims[2];
     break;
    case 3:
     offset = offset + idx[2]*imageDims[0]*imageDims[1];
     break;
    case 2:
     offset  = offset + idx[0] + idx[1]*imageDims[0];
     break;
    }

    return offset;
  }
0
the boy