首页 > 解决方案 > C++ 切换空默认情况

问题描述

我想我过去曾被宽松的编译器误入歧途。我一直很高兴地处理类似的事情

int main()
{
    int g = 3;
    switch (g) {
           case 1: ++g;
                   break;
           case 2: g+=2;
                   break;
           default:
                   // do nothing 
    }
    return g;
}

编译没有问题。但最近我遇到了编译器错误

将默认大小写修改为

           default:
                   // do nothing 
                   break;
    }

甚至

           default:; // do nothing 
    }

使编译器高兴。 cppreference不清楚。语法在其后放置了一条语句default,似乎暗示在 之后需要一些东西default:。这甚至可能是一个空语句,因此您甚至不需要break,只需一个分号即可。关于语句s 的部分不清楚标签是否可以出现在复合语句的末尾。

那么,default:在右大括号之后但之前什么都没有的开关是否格式良好?在旧版本的 C 或 C++ 中是否可行?

(请注意,这与是否包含默认值无关。此外,您需要假设默认值不做任何事情是合法的。此外,这个问题很接近,但没有雪茄。)

标签: c++syntax

解决方案


推荐阅读