Операторы переключения регистра по умолчанию будут сброшены В случае показанной программы, если VDimension
равно 4, тогда все из
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];
будет выполнено.
В некоторых других языках, таких как Паскаль, выполняется только один случай, и концепция провала отсутствует. Таким образом, программисты, плохо знакомые с C ++, могут непреднамеренно писать ошибки при переключении.
Если провал непреднамеренный, вам нужно добавить разрыв между каждым случаем, чтобы не провалиться.
это утверждение может провалиться
Это предупреждение уведомляет программиста о провале. Эта опция предупреждения может управляться переключателем компилятора GCC -Wimplicit-fallthrough
. Он не включен по умолчанию и не включен -Wall
, но включен -Wextra
.
Предупреждения становятся ошибками, если используется переключатель -Werror
. -Werror
по умолчанию не включено.
C ++ 17 представил атрибут [[fallthrough]]
, предупреждение которого можно использовать для явного документирования провала, когда оно сделано преднамеренно. Компилятор не должен предупреждать, если он используется.
До C ++ 17 GCC предоставляет атрибут расширения языка __attribute__ ((fallthrough))
для той же цели.
Падение также может быть задокументировано с комментарием, и Wimplicit-fallthrough
может обнаружить такой комментарий в зависимости от того, какое значение было использовано с коммутатором. Более подробно в документации GCC.