我正在研究我的LED-Strip并使用HEX-Color-Codes来处理它。 现在,我希望通过使用switch语句更改Color-Code来创建平滑的彩虹效果。
1 switch(M0_Color){
2 case 0xff3300 ... 0xffcc00: M0_Color += 0x003300; break;
3 case 0xffff00 ... 0x33ff00: M0_Color -= 0x330000; break;
4 case 0x00ff00 ... 0x00ffcc: M0_Color += 0x000033; break;
5 case 0x00ffff ... 0x0066ff: M0_Color -= 0x003300; break;
6 case 0x0033ff: M0_Color = 0x0025ff; break; //Smoother transition
7 case 0x0025ff ... 0x0005ff: M0_Color -= 0x000500; break;
8 case 0x0000ff ... 0x2000ff: M0_Color += 0x0500ff; break;
9 case 0x2500ff: M0_Color = 0x3300ff; break; //Smoother transition
10 case 0x3300ff ... 0xcc00ff: M0_Color += 0x330000; break;
11 case 0xff00ff ... 0xff0066: M0_Color -= 0x000033; break;
12 case 0xff0033: M0_Color = 0xff0025; break; //Smoother transition
13 case 0xff0025 ... 0xff0005: M0_Color -= 0x000005; break;
14 case 0xff0000 ... 0xff2000: M0_Color += 0x000500; break;
15 case 0xff2500: M0_Color = 0xff3300; break;
16 }
M0_Color是颜色的变量。它的值开始是0xff3300。
显示的代码循环运行。
可悲的是,我的需求只有有限的选择,这是最吸引人的选择。
现在,当我编译它时,它会抛出两个错误并发出警告:
**Warning**: "empty range specified" (here: in code lines 3, 5, 7, 11, 13)
**Error 1**: "duplicate (or overlapping) case value" (here: in code lines 8, 14)
**Error 2**: "this is the first entry overlapping that value" (here: in code lines 7, 13)
我非常感谢你的帮助! 提前致谢!
Line 3: case 0xffff00 ... 0x33ff00:
您首先指定了较高的值。 它相当于说
case 99 ... 10: //* Specifying an empty range. You want 10 ... 99
Line 8: case 0x0000ff ... 0x2000ff
这个范围与它上面的范围重叠0x0025ff ... 0x0005ff
。
每个范围必须是不同的且不重叠的。
它相当于有两个范围:10 ... 20
和15 ... 17
。它们重叠。
编译器应该为变量case
选择哪个16
?
最后,这些错误消息非常清楚,并准确解释了问题所在。你为什么读这篇文章有困难?
阅读和理解错误消息是编程的核心技能。 (我之前从未见过这些错误,但是文字立即明白了问题是什么)