我想知道是否所有编译器都会像 VS2005 那样在 switch 语句中默默地忽略标签之前的代码。
这就是我所追求的:
#define CASE break; case
所以,
switch (i) {
CASE 0: print("0");
CASE 1: print("1");
}
会变成
switch (i) {
break;
case 0: print("0"); break;
case 1: print("1");
}
从标准来看,第一个“中断”(以及那里的任何其他代码,如果存在的话)似乎很清楚不会被执行。该标准并不否认此类代码的存在,但我不能确定实际的编译器。