Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在任何情况下,switch语句中的using声明是否合法?_C++_Switch Statement - Fatal编程技术网

C++ 在任何情况下,switch语句中的using声明是否合法?

C++ 在任何情况下,switch语句中的using声明是否合法?,c++,switch-statement,C++,Switch Statement,下面的代码在GCC 9.1(-Wall-Wextra-Werror-g)中编译得很好,没有任何警告或错误,但是clang tidy给了我OCDFAInspection警告:无法访问的代码。因为GCC在交换用例中具有所有这些整数,如整数范围,我担心,这可能是另一个插件,而实际上不是有效的C++。 C++中的下面代码是合法的(17,如果这很重要)?< /P> 名称空间foo{ 无效条(){} } int main(){ int n=42; 开关(n){ 使用名称空间foo;//的switch语句很

下面的代码在GCC 9.1(-Wall-Wextra-Werror-g)中编译得很好,没有任何警告或错误,但是clang tidy给了我
OCDFAInspection警告:无法访问的代码。因为GCC在交换用例中具有所有这些整数,如整数范围,我担心,这可能是另一个插件,而实际上不是有效的C++。

C++中的下面代码是合法的(17,如果这很重要)?< /P>

名称空间foo{
无效条(){}
}
int main(){
int n=42;
开关(n){

使用名称空间foo;//的
switch
语句很有趣,因为它的语法类似

switch (expression) statement
这里的
语句
可以是任何语句。编译器在
开关
的范围内对关键字
大小写
默认值
中断
进行不同的处理,但在其他情况下,您可以拥有任何想要的语句,包括块语句(用大括号括起来的语句列表)你想要什么都行

案例之外的通用语句的问题是它们不会被执行。生成的代码将跳转到特定的
案例
标签(或
默认
案例),跳过不属于案例的任何语句


但对于这种特殊情况,正如注释中所提到的,它是一个误报。这里使用的
using
指令指示编译器将名称空间
foo
添加到其符号查找中,但它本身并不创建或生成任何可执行代码。

警告是一个异常整洁的bug?@nada-一个误报。using指令只影响块范围内的名称查找。它的“到达能力”毫无意义。