web-dev-qa-db-fra.com

Erreur: cette instruction peut passer par [-Werror = implicit-fallthrough =]

J'essaie de compiler mitk sur ubuntu et j'ai eu cette erreur:

erreur: cette instruction peut passer par [-Werror = implicit-fallthrough =]

Ici, il y a une partie du code:

      /** 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;
      }

Je serais reconnaissant pour toute aide s'il vous plaît.

3
agasim

Vous devez ajouter un saut de mot clé à chaque déclaration de cas, si vous ne le faites pas, le code s'exécutera à partir de la casse à laquelle il correspond et continuera à répondre à la

pause;

par exemple: Si VDimension = 4, alors le code s'exécutera du cas 4 => continuez au cas 3 => continuez au cas 2 puis coupez. Cela signifie qu'il exécutera les commandes ci-dessous:

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;

Je pense que votre code devrait être:

/** 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