在使用CLang编译C++源码时出现这种警告,原因是switch-case代码段里没有加break,例如下面这样:
switch (count) {
case 3:
data[offset++] = 0;
case 2:
data[offset++] = 0;
case 1:
data[offset++] = 0;
}
但是有时候自己的代码逻辑上就是要不加break,那需要怎么解决这个警告?
解决方式:
#define FALLTHROUGH_INTENDED [[fallthrough]]
switch (count) {
case 3:
data[offset++] = 0;
FALLTHROUGH_INTENDED;
case 2:
data[offset++] = 0;
FALLTHROUGH_INTENDED;
case 1:
data[offset++] = 0;
}
加的FALLTHROUGH_INTENDED是为了让编译器忽略-Wimplicit-fallthrough这个警告。