admin管理员组

文章数量:1530085

在使用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这个警告。

本文标签: fallSwitchClangunannotatedWimplicit